View Issue Details

IDProjectCategoryView StatusLast Update
0004076The Dark ModAnimationpublic01.02.2015 22:45
ReporterSteveL Assigned ToSteveL  
PrioritynormalSeveritynormalReproducibilitysometimes
Status resolvedResolutionfixed 
Product VersionTDM 2.03 
Target VersionTDM 2.03Fixed in VersionTDM 2.04 
Summary0004076: Final riverdancing
DescriptionRiverdancing can still occur if the game code sets a new anim state for an AI who wants to turn while a custom idle is playing, without clearing the wait state in a separate step. Most places in the code already clear the wait state, but there are 4 more places in the State code that start Legs_Idle without doing it, and there could be many more that set a different anim state that could then go on to start the Legs_Idle state.

Legs_Idle will start Legs_Turn if the AI wants to turn and isn't doing anything else. If Legs_Turn starts up while the AI is still in an "idle" wait state, riverdancing will always happen, and the AI will be stuck shuffling on the spot until something ahpopensto trigger a new anim state.
Additional InformationFrom discussion with grayman and Springheel:
- Riverdancing is the result of AI turning being delayed while the game thinks that a custom idle anim is playing, i.e. when an AI is in wait state "idle" or "idle_no_voice". If the idle is not actually playing, and the legs are already cycling their turn animation, that wait can go on forever.
- The game code relies on the AI scripts to clear that wait state, once the custom idle animation is done. But there are dozens of places in the game code that potentially halt the custom animation script before it does its clean-up.
- Turning is already a special case, a game action that has to be delayed to let an anim complete.
- 100% of riverdancing is caused by a Legs_Turn script starting up while an "idle" wait state is active. We've done fixes to diverse places in the code to stop that happening, but *all* the bugs gave rise to that same situation.
- If a Legs_Turn script starts while an "idle" wait state is in effect, riverdancing will happen 100% of the time. It can only be interrupted when something forces the AI into a new anim state, such as an alert.

So by allowing the turn scripts to unblock river dancing (clearing the "idle" wait states) we cure all river dancing and affect zero situations that are working ok right now. It's not the original design, but it'd let us move forward with 2.03 riverdancing-free, and anyway we already decided the anim control system needs an overhaul that we plan to give it in 2.04.
TagsNo tags attached.

Relationships

related to 0004050 resolvedSteveL More riverdancing 
related to 0004012 resolvedSteveL Sitting guard in Old Habits 2 can't get up 

Activities

SteveL

SteveL

01.02.2015 22:37

reporter   ~0007402

Script change at rv 14224

Issue History

Date Modified Username Field Change
01.02.2015 22:01 SteveL New Issue
01.02.2015 22:01 SteveL Status new => assigned
01.02.2015 22:01 SteveL Assigned To => SteveL
01.02.2015 22:01 SteveL Additional Information Updated
01.02.2015 22:37 SteveL Note Added: 0007402
01.02.2015 22:45 SteveL Status assigned => resolved
01.02.2015 22:45 SteveL Fixed in Version => TDM 2.04
01.02.2015 22:45 SteveL Resolution open => fixed
01.02.2015 22:45 SteveL Relationship added related to 0004050
01.02.2015 22:45 SteveL Relationship added related to 0004012