HasTakenDamage not working consistently

Hi

I have an AI that's supposed to run for cover as soon as it takes damage. This sequence works randomly in my setup. Mostly, the sequence doesn't run at all, other times, it runs only once throughout the whole play session. Here's a video showing the behavior tree. You can tell when the enemy is attacked by the sounds. The Start Ability task in that sequence is for sprinting.


I have noticed that removing the Pursue task makes it work more often - could this be interrupting the Take Damage sequence? But why? The Take Damage sequence is the very first, and has a Lower Priority abort set up, so ideally, it should interrupt everything and start the Take Damage sequence as soon as the enemy takes damage right?

Secondly, is there something wrong with the way I've set up that sequence? As in, it often feels like that take damage, take cover sequence can only run successfully once, and then after that it's considered "completed" so it never runs again. Even the symbols show the Success icon, and that never resets to the X failure icon after it has run the cover sequence once. Is there any way to automatically reset the Cover task so that it is allowed to repeat?

I've also checked the logs and mostly the Take Damage task returns success only once per play session as well.
 
Update: Adding a 1s Wait task after Cover makes it *slightly* more consistent - HasTakenDamage works more often on the first hit. But it shows failure for all later hits. The other issue (Cover staying stuck on Success after the first time) also remains.
 
Hello - unfortunately version 2 of the controller is no longer supported. For continued support please update to version 3.
 
No, it's related to Has Taken Damage. All of those tasks have changed in version 3 and I no longer am able to test out a similar situation. At a high level your behavior tree looks ok since you are reevaluating it with a conditional abort.
 
Alright, for anyone that has a similar issue - the Cover task wasn't working properly as it needed more raycasts (I set it to 500)

As for TakeDamage, it worked for me by removing these lines of code, and setting the Attacker in the inspector:

50 //if (m_Attacker.IsShared) {
51 // m_Attacker.Value = m_Originator;
52 //}

and

63 // m_Originator = null;
 
Top