ABrandau/Shattered-Paradise-SDK

Crash: Revoke condition on GrantConditionOnDamageState

dnqbob opened this issue · 4 comments

log:

OpenRA engine version 13bc7dc
Shattered Paradise mod version {DEV_VERSION}
on map 76424132e5b28f98c4b38918144ebc3e8828c2a7 (Way to Uganda by Morton).
Date: 2021-08-20 09:53:51Z
Operating System: Windows (Microsoft Windows NT 10.0.19043.0)
Runtime Version: .NET CLR 5.0.7
Exception of type `System.InvalidOperationException`: Attempting to revoke condition with invalid token 1 for sonic 1031.
   at OpenRA.Actor.RevokeCondition(Int32 token) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\Actor.cs:line 595
   at OpenRA.Mods.Common.Traits.GrantConditionOnDamageState.OpenRA.Mods.Common.Traits.INotifyDamageStateChanged.DamageStateChanged(Actor self, AttackInfo e) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Mods.Common\Traits\Conditions\GrantConditionOnDamageState.cs:line 83
   at OpenRA.Mods.Common.Traits.Health.InflictDamage(Actor self, Actor attacker, Damage damage, Boolean ignoreModifiers) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Mods.Common\Traits\Health.cs:line 208
   at OpenRA.Mods.Common.Warheads.SpreadDamageWarhead.DoImpact(WPos pos, Actor firedBy, WarheadArgs args) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Mods.Common\Warheads\SpreadDamageWarhead.cs:line 107
   at OpenRA.Mods.Common.Warheads.DamageWarhead.DoImpact(Target& target, WarheadArgs args) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Mods.Common\Warheads\DamageWarhead.cs:line 64
   at OpenRA.GameRules.WeaponInfo.Impact(Target& target, WarheadArgs args) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\GameRules\WeaponInfo.cs:line 241
   at OpenRA.Mods.AS.Projectiles.BulletAS.Explode(World world) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Mods.AS\Duplicates\Projectiles\BulletAS.cs:line 332
   at OpenRA.WorldUtils.DoTimed[T](IEnumerable`1 e, Action`1 a, String text) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\WorldUtils.cs:line 75
   at OpenRA.World.Tick() in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\World.cs:line 437
   at OpenRA.Game.InnerLogicTick(OrderManager orderManager) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\Game.cs:line 624
   at OpenRA.Game.LogicTick() in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\Game.cs:line 639
   at OpenRA.Game.Loop() in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\Game.cs:line 806
   at OpenRA.Game.Run() in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\Game.cs:line 859
   at OpenRA.Game.InitializeAndRun(String[] args) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Game\Game.cs:line 277
   at OpenRA.Launcher.Program.Main(String[] args) in D:\work\Projects\Github\shattered-paradise-sdk-mirror\engine\OpenRA.Launcher\Program.cs:line 32

Maybe this comes from two condition control trait with the same condition

Judging from the condition index, this probably was the FullHealth condition which prevents repair autotargeting. Do you have the replay? I feel you need to actively monitor the actor status to figure out what happened here. I don't have ORA installed atm but my guess would be that there was an outside effect already damaging the actor and this is a timing error.

Or that. Funstuff. Glad I dropped the ball and I'm not affected.