Author Topic: [Resolved] Animation Freeze  (Read 19949 times)

ushas

  • Hero Member
  • *****
  • Posts: 661
[Resolved] Animation Freeze
« on: September 15, 2017, 07:24:15 PM »
(v19, linux)

Emilia got incapacitated by one of the mafia specialists on facility mission (workshop map). Everything seems alright, including her portrait removal from the queue. Except, her tile isn't available and if I try to move mouse there, it seems the tooltip says she is still alive with 2/37 HP.

Problem is that I've realised this later, after looking at the screenshot taken when Elena couldn't step on the tile. The log got accidentally rewritten in the meantime.

Another situation, and this may be totally unrelated, is when Ray stays standing but he is incapacitated already. I can step on his tile alright.

As far as I know there was no battle stopper in either cases (they were both counted as incapacitated in the end). Just an inaccessible tile or a glitch of two units standing on the same one. So unless you say otherwise, I'll leave this for later investigation?

One very wild hypothesis is, if the game somehow decides on incapacitation of unit prior applying armour influence on damage. But that's most probably wrong course.
« Last Edit: September 20, 2017, 01:28:07 PM by Daithi »

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #1 on: September 18, 2017, 05:51:37 PM »
If it happens all the time, will try to recreate and fix. I had a few allies KO during testing with no issues. You may be right on the incapacitation logic, that does happen in many cases. Do you remember what type of damage the KO was caused by? Would be a good place to start.

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #2 on: September 18, 2017, 07:30:24 PM »
Also armour, if any would be good to know. Most probably I'll pick this up after EA if I can't recreate quickly - need to have a few days to spare in case it's necessary to make critical fixes to V20.

ushas

  • Hero Member
  • *****
  • Posts: 661
Re: Persistent ally
« Reply #3 on: September 18, 2017, 08:39:09 PM »
It doesn't happen often at all (was letting allies go down periodically in the past). The Emilia case only once to me. Till today the Rays's too. But I also saw Sam standing post-incapacitated on tonight mission with survivalists - so that's twice. He was hit by a specialist and inside a smoke. Probably not related though.

Is it possible that the falling down animation isn't properly triggered / concluded?

I saved the log for the Ray's case. From the point of the shot till the end of attacker's turn:
Code: [Select]
CharacterMainScript.SetupRangedAttack. Method called. Selected weapon name is: General Arms Patriot use mode pos: 0 body part damage modifier1 status effect: -1 is overwatch: False
Item.ApplyDeteriorationFromUse. Method called. Item condition %: 0.9400001
CharacterMainScript.SetupRangedAttack. Character has small arms & fastest gun perk.
BattleControlScript.CalculateShotDifficulty. Method called. Distance is: 4
BCS.CalculateShotDifficulty. Shot difficulty is: 132.0461 base shot difficulty: 60 shot difficulty from distance: 44 shot difficulty from crouching target: 0 shot difficulty from smoke: 0 shot difficulty from directional cover: 20.04611 defense from evasion: 8 defense from armour: 0
BattleControlScript.CalculateShotScore. Character gets accuracy bonus from cover
BattleControlScript.GetRangedChanceToHit. defender wound level: 2, increasing CTH by: 10
BCS.GetRangedChanceToHit. Shot difficulty is: 132.0461 / shot score is: 66.5 chance to hit is: 60 use mode: 0
CharacterMainScript.SetupRangedAttack. Method called. Chance to hit: 60 body part modified CTH: 1
BattleControlScript.ReturnCriticalHitsList. Crit: 9.85 target penalty: 0
CharacterMainScript.StartRangedAttack. Method called. Is overwatch attack: False
BattleControlScript.NotifyEnemyTheyAreUnderAttack. Method called.
CameraControlScript.CheckIfRangedAttackerAndDefenderWithinFieldOfView. Method called.
CameraControlScript.CheckIfCameraHasLOSToBothCharacters. Character B has LOS.
CharacterMainScript.StartRangedAttack. selected item is: General Arms Patriot ranged weapon clas: 0 bullet spawn point is: 0
Gunscript.HandleFiringEffects. Is shotgun: False
BattleSceneSFXScript.PlayShootingSound. Method called. Sound pos is: 2
CharacterMainScript.FireBullet. Method called. direction is: (0.5, 0.0, -0.9)
BulletScript.SetDirection. Method called. Direction is: (0.5, 0.0, -0.9)
BulletScript.OnTriggerEnter. Trigger event detected with object of tag: Characterbullet hits target: True
BulletScript.OnTriggerEnter. Hit character ID is: 1 target character id is: 1
BulletScript.OnTriggerEnter. Bullet hit correct character, destroying. Time when shot hit: 631.12
CharMainScript.StartRangedAttack. Attack has succeeded. Hit miss count: 1 attack damage list: 1
CharacterMainScript.ReduceHP. Method called. is overwatch: False /is AOO: False
Item.ReturnDamageAfterResistance. Damage is: 13.77585 / damage type: 0
Item.ReturnDamageAfterResistance. Start Damage: 13.77585 /armour condition %: 0 /absorbed 0 /resisted: 0 /damage applied: 13.77585
Item.ApplyDamageToArmour. Method called damage: 13.77585 /armour damage level: 2 /is crit:False /wrecking ball: False targetted body: False
Item.ApplyDamageToArmour. Total armour damage: 1.102068 /Total %: 0.08 /base: 0.08 /from crit: 0 /from wrecking ball: 0 /from target body: 0
CharacterMainScript.HandleWoundedState. Health %: -0.1240888 < Heavy: 0.25 < Light: 0.5
CharacterContainer.SetWoundedState. Method called. Wounded state is: 2
CharMainScript.ReduceHP. This character is in combat. Updating combatant icons
CombatQueueManager.UpdateCombatantIcon. Method called for character ID: 1 health is: -5.956264
CombatantIconScript.SetNotCombatCapable
CharacterMainScript.ReduceHP. This character HP current: -5.956264
CombatQueueManager.RemoveCombatantIconWithID. Method called. Character ID: 1
CombatQueueManager.RemoveCombatantIconWithID. Remove Icon is in list
CombatQueueManager.RemoveCombatantIconWithID: Number of queue icons removed: 1
CharacterMainScript.ReduceHP. This character has HP < 0
CharacterMovementScript.SetAdjacentMeleeOpponentAnimatorParameter. Method called: True
CharacterContainer.AdjustRelationship. Ray Case adjustment is: -3
VictoryDefeatConditionManager.CheckVictoryDefeatConditions. Method called. Level won: False mission failed: False
VictoryDefeatConditionManager.GetNumberOfCombatCapableAllies: Count is: 2
VictoryDefeatConditionManager.CheckVictoryDefeatConditions. Combat capable: 2 incapacitated: 2 fled: 0
BattleControlScript.CheckIfVictoryConditionsSatisfied. Criminal at pos: 0 is still combat capable. Not all criminals have been disabled.
CharMainScript.ReduceHP. Health for Ray Case reduced by 13.77585
CharacterMainScript.HandleHitByRangedFire. Method called. Hit character is: Ray Case
CharacterMainScript.HandleHitByRangedFire. Character HP is < 0, killed
CharacterMovementScript.CheckIfEnoughClearanceForBackwardKOAnimation. Method called.
CharacterMainScript.StartRangedSingleTargetAttack. Is in strafe origin: True
CharacterMainScript.ConcludeRangedAttack. Method called. Number of hits: 1 number of misses: 0
CharacterMainScript.SetOnFireParticlesState. Method called. Requested state: False
CharAIScript.ReturnControlToAI. Method called
CharAIScript.ReturnControlToAI. Out of AP. Ending Turn
... so, Patriot snap mode, Ray heavy wounded and his armour already broken?

Apart a little bit confusion, it's not critical. I'm still not sure on recreation though. Sorry!

ushas

  • Hero Member
  • *****
  • Posts: 661
Re: Persistent ally
« Reply #4 on: September 18, 2017, 08:44:44 PM »
Probably not helping anything, but just in case: both persistent standing allies (Ray and Sam above), were as if frozen in time, no usual between turns idle movement.

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #5 on: September 18, 2017, 09:01:22 PM »
Is it possible that the falling down animation isn't properly triggered / concluded?

Nothing jumping out on the log. It looks like that - the freezing suggests some breakdown in the animation logic. If that's the case, it would be useful to know what item they had equipped (as this determines the set of animations being used). Another variable hinted at is the clearance, i.e. is there room for them to fall over or do they need to do this in place

ushas

  • Hero Member
  • *****
  • Posts: 661
Re: Persistent ally
« Reply #6 on: September 18, 2017, 09:32:34 PM »
The Ray's image for now:

The last thing he did, according to the log, was landing a hit with his reinforced bat, but he was using this weapon quite regularly in the past.

I don't have a screen for Sam (prob. had a knife), but I think can recall a map and the approx area. So I will redo the mission and try to recreate.

PS: Still unable to attach images and when I want to look at the old attachments it says "404 - Attachment Not Found". Is this happening only me?


Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #7 on: September 18, 2017, 10:16:53 PM »
Getting this too. The service provider migrated the server, and there have been changes since.

So Ray hit someone with a bat, then got shot by a patriot, died, and froze standing up? I'll take a look at this tonight.

PS. Wanna guess what I'm working on? : )

ushas

  • Hero Member
  • *****
  • Posts: 661
Re: Persistent ally
« Reply #8 on: September 18, 2017, 10:50:25 PM »
On the first try everybody nicely felt down. However, right after Sam's falling, Ray couldn't step his tile right away being HtH. Nor any other tile, actually, till he changed his weapon at hand. Then it's all ok again.

No errors, but this in the log:
Code: [Select]
ReachableTileScript.SearchForReachableTiles. Method called. Current tile is: (10.0, 2.0) physical position: (12.6, 0.0, -2.0)
...
MouseTrackerScript.Update. Right Click. Tile is: (11.0, 2.0)
BattleControlScript.DetermineRightClickAction. Second click on same tile
BattleControlScript.DetermineRightClickAction. Move requested to unoccupied tile. Move cost: 0 action points: 10
CharacterMovementScript.InvokeStartMovement. Path is null
Ray on (10.0, 2.0) trying to step on a tile at (11.0, 2.0).

I let all my allies to KO around area where Sam was standing before, as mentioned they all felt, but Emilia is mostly in the building, Sam partially, and Elena out of the map boundary:

It's OldIndustrial2, danger 3, Survivalists. Ray is now standing on that (11.0, 2.0) tile I think.

Btw. smoke is animated not only above but also under the map (can see it near boundary). Not sure if map related or a common glitch.

So Ray hit someone with a bat, then got shot by a patriot, died, and froze standing up?
Yeah. Only that I wasn't aware of his death right away. Found out later wondering how come he is not getting a turn...

PS. Wanna guess what I'm working on? : )
No! Totally don't want to know it's overwatch again... Sigh, is it?  (well, you said you're testing it like two hours ago...)
« Last Edit: September 18, 2017, 10:54:29 PM by ushas »

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #9 on: September 18, 2017, 11:24:38 PM »
Yeah. Only that I wasn't aware of his death right away. Found out later wondering how come he is not getting a turn...

Now that I know 2 handed melee is causing a problem, I can hone in on it. If you encounter anything else, (like 1 h melee, unarmed, 1 h ranged etc) causing a problem, let me know and I'll try to recreate before V20 goes live.

No! Totally don't want to know it's overwatch again... Sigh, is it?  (well, you said you're testing it like two hours ago...)
Yeah... multiple attacks were happening too rapidly, and was causing animation issues (not unlike what you described) among other things, so worked on adding a delay between the attacks. Appears to have worked, but need to do more testing when am fresher tomorrow.

ushas

  • Hero Member
  • *****
  • Posts: 661
Re: Persistent ally
« Reply #10 on: September 18, 2017, 11:35:57 PM »
And here I was enjoying overwatch cascades:)...

Hm. Is a knife 1h or 2h?

One other most probably unrelated tidbit is that the map (OldIndustrial2) has the elevation a bit uneven. The central road is slightly lower than the area in the picture.

Edit: Ugh. Forgot to switch to bat before end turn. Yeah time to call it a day.
« Last Edit: September 18, 2017, 11:54:41 PM by ushas »

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #11 on: September 19, 2017, 08:40:07 AM »
Yeah. it was cool when 2-3 melee overwatches were triggered and maybe an enemy gets an attack too. Not quite as fast now, but still fairly rapid.

All the knifes are 1H - you can tell by how many hands are on the weapon in attack & idle animation.

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #12 on: September 19, 2017, 11:26:28 AM »
Would guess that the emilia issue (not freeing tile) is separate from the Ray Case one.

Concerning the Ray Case issue, have found a condition using 2H melee that wasn't covered (character orthagonal to full cover) which was causing an issue like the one you described (and indeed Ray is orth to full cover in the image). Will play some more with 1H & 2H melee and see if anything else comes up.

ushas

  • Hero Member
  • *****
  • Posts: 661
Re: Persistent ally
« Reply #13 on: September 19, 2017, 11:56:15 AM »
Concerning the Ray Case issue, have found a condition using 2H melee that wasn't covered (character orthagonal to full cover) which was causing an issue like the one you described (and indeed Ray is orth to full cover in the image). Will play some more with 1H & 2H melee and see if anything else comes up.
Aha, good one! I need to start paying attention to facing...

Wasn't using melee OW for some time, because of running animation loop. Recalling also neat 1v1 boxing matches, but that was due to bugs in the past. Though it would be cool to have some reactionary punch perk. Imagine if one lieutenant has it too: he punches -> ally punches -> he punches -> ally... till one is down... Ups, if they miss all the time it's an infinite loop. But still!

PS: One most probably unrelated thing is that when you end the turn via shortcut, you can do it at the point when pointing at enemy so an ally is in the action-targeting state (tried guns and grenades). Then they stay in that state till next turn, not in the idle one. Not sure about CC weapons though. Mentioning in case there could be some further issues with this.

Daithi

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1250
Re: Persistent ally
« Reply #14 on: September 19, 2017, 11:58:39 AM »
I've split the topics out. Found another issue with a 2H evade which could have caused same issue. Will continue with testing this for another while, see if anything else turns up.