ABrandau / Shattered-Paradise-SDK

Shattered Paradise's main repository and installation Kit.
GNU General Public License v3.0
60 stars 9 forks source link

Crash: Revoke condition on GrantConditionOnDamageState #34

Closed dnqbob closed 3 years ago

dnqbob commented 3 years ago

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
dnqbob commented 3 years ago

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

GraionDilach commented 3 years ago

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.

dnqbob commented 3 years ago

@GraionDilach https://github.com/OpenRA/OpenRA/pull/19620

GraionDilach commented 3 years ago

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