Able Ability System Info and Support Thread

@ Hi , I wanted to alert you to another problem we’ve encountered with Passives. If you have a passive ability that uses PlayAbility to spawn a couple more passives on the same actor, there is a crash (exception in editor) that can occur. If you look in the TickComponent code where you update Passives, you’re using this loop with an iterator:

for (UAblAbilityInstance* Passive : m_PassiveAbilityInstances)

If any of the InternalUpdateAbility(Passive,…) calls spawn new passives (like in the case above) then the m_PassiveAbilityInstance array will be modified. We’ve had a few crashes when this happens so I changed the code to do a reverse iteration like so:

for (int idx=m_PassiveAbilityInstances.Num()-1; idx >= 0; idx–)

This should allow for removals and additions (though adds will be skipped in the current iteration) without throwing any exceptions. You may choose to solve it a different way, but I wanted to let you know there was a problem.

Thanks,
Mike