BattletechModders / CBTBehaviorsEnhanced

Applies Classic BattleTech behaviors to the HBS BattleTech Game
MIT License
5 stars 6 forks source link

Ammo explosion on mech that has no ammo #42

Open IceRaptor opened 4 years ago

IceRaptor commented 4 years ago

From #closed-3496

I got a message that ammunition exploded on the mech, but it doesn’t have any ammo

https://cdn.discordapp.com/attachments/697343158467428433/697664161534181426/Unexpected_Overheating_2.png

Attachment file type: archive Modlogs.zip 3.67 MB also, this mech had a hyper laser, which, as it seems to me, exploded on the first malfunction. But this is not accurate, I could have missed the first message about the fail. no, the laser exploded in a regular manner, it already had a malfunction Suspicious Chairwoman Alekto04/14/2020 volatile components are an ammo explosion to the games logic despite not being ammo that exploded Grey W04/14/2020 but the laser was already exploded, and the hand in which he was fit is missing

https://cdn.discordapp.com/attachments/699679847517126837/699682860285559015/BattleTech_2020_04_14_20_44_34_824_cr.png

FrostRaptor04/14/2020 Looks like a fairly nasty stack-trace around that time 2020-04-14T20:31:02 FYLS [ERROR] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object at (wrapper dynamic-method) BattleTech.Mech.DamageLocation_Patch5(object,int,BattleTech.WeaponHitInfo,BattleTech.ArmorLocation,BattleTech.Weapon,single,single,int,BattleTech.AttackImpactQuality,BattleTech.DamageType) at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in :0 Attachment file type: document message.txt 2.55 KB --- End of inner exception stack trace --- at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in :0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in :0 at Harmony.Traverse.GetValue () [0x00078] in <1b23547042994e96b8b6361dbe3791d9>:0 at Harmony.Traverse.GetValue[T] () [0x00001] in <1b23547042994e96b8b6361dbe3791d9>:0 at MechEngineer.Features.ComponentExplosions.MechPrivateExtensions.DamageLocation (BattleTech.Mech mech, System.Int32 originalHitLoc, BattleTech.WeaponHitInfo hitInfo, BattleTech.ArmorLocation aLoc, BattleTech.Weapon weapon, System.Single totalArmorDamage, System.Single directStructureDamage, System.Int32 hitIndex, BattleTech.AttackImpactQuality impactQuality, BattleTech.DamageType damageType) [0x00069] in :0 at MechEngineer.Features.ComponentExplosions.ComponentExplosionsFeature.CheckForExplosion (BattleTech.MechComponent component, BattleTech.WeaponHitInfo hitInfo, BattleTech.ComponentDamageLevel damageLevel, System.Boolean applyEffects) [0x001b3] in :0 at MechEngineer.Features.ComponentExplosions.Patches.MechComponent_DamageComponent_Patch.Postfix (BattleTech.MechComponent __instance, BattleTech.WeaponHitInfo hitInfo, BattleTech.ComponentDamageLevel damageLevel, System.Boolean applyEffects) [0x00000] in :0 2020-04-14T20:31:02 FYLS [LOG] OnAttackComplete for stackSequence 1640, remaining sequences: 0 @CptMoore last patch stack trace is ME's ComponentExplosions - does this look familiar? Grey W04/14/2020 another ammo explosion on the same mech in the same battle later

https://cdn.discordapp.com/attachments/699679847517126837/699700071058505888/BattleTech_2020_04_14_22_14_47_243_cr.png

Attachment file type: archive Modlog2.zip 4.51 MB CptMoore04/15/2020 need the harmony patch log where it says what mods hook what need to know who else patches BattleTech.Mech.DamageLocation Harkonnen04/15/2020 BattleTech.Mech.DamageLocation: Prefixes: io.mission.modrepuation MechEngineer.Features.ComponentExplosions us.frostraptor.IRTweaks Transpilers: MechEngineer.Features.ComponentExplosions Postfixes: MechEngineer.Features.ComponentExplosions CptMoore04/15/2020 since I'm using a "fake" weapon to throw ComponentExplosions, modreputation or IRTweaks could be throwing the null pointers Harkonnen04/15/2020 actually, i think thats 99% on @FrostRaptor HullIntegrity CptMoore04/15/2020 but patch5 sound like postfix,"last" patch of the whole bunch I'll check if I can improve the fake weapon Suspicious Chairwoman Alekto04/15/2020 irtweaks does the fakehit, cac's explosion is for stackpoling Harkonnen04/15/2020 this logs have some clear HullIntegrity NREs, i think ME is just a victim here Suspicious Chairwoman Alekto04/15/2020 could be

its been wonky since the beginning :frowning: CptMoore04/15/2020 dont know how to improve any DamageLocation call, so hopefully its something that another mod can fix FrostRaptor04/15/2020 Why HullIntegrity @Harkonnen given that it's a tropical biome? 2020-04-14T19:42:29 FYLS [LOG] Applying mood [JungleDayMisty] 2020-04-14T19:42:34 FYLS [LOG] Applying mood [JungleDayMisty] Just the general 'HullIntegrity' has been a pain? Ah, you mean these 2020-04-14T20:01:37 FYLS [ERROR] CRITICAL ERROR, PLEASE REPORT: Delegate OnAttackSequenceEnd - Standard for message type OnAttackSequenceEnd failed with exception Object reference not set to an instance of an object at CBTBehaviorsEnhanced.HullIntegrity.AttackDirector_OnAttackSequenceEnd+<>c.b3_0 (BattleTech.MechComponent mc) [0x00006] in :0 at System.Linq.Enumerable+WhereListIterator`1[TSource].ToList () [0x00017] in <1b13ba6391c74847bbc3eddc86df7eee>:0 Those happen after the damage component calls presumably, though: 2020-04-14T20:01:37 FYLS [DEBUG] Creating scopedId=MECriticalHitEffect_CriticalEffect-TurretRactorCritDamage2_6fd7746a-0546-4322-820f-a6130e33a84b.0 statName=DamageReductionMultiplierAll 2020-04-14T20:01:37 FYLS [DEBUG] Creating scopedId=MECriticalHitEffect_CriticalEffect-TurretRactorCritPenalty2_6fd7746a-0546-4322-820f-a6130e33a84b.0 statName=CriticalHitChanceReceivedMultiplier 2020-04-14T20:01:37 FYLS [DEBUG] Creating scopedId=MECriticalHitEffect_CriticalEffect-TurretRactorCritDefense2_6fd7746a-0546-4322-820f-a6130e33a84b.0 statName=ToHitThisActor 2020-04-14T20:01:37 FYLS [LOG] All messages completed as expected! 2020-04-14T20:01:37 FYLS [LOG] MORALE: attack caused critical hit (+1) 2020-04-14T20:01:37 FYLS [LOG] MORALE: Player 1 team change = +1 morale 2020-04-14T20:01:37 FYLS [LOG] MORALE: team Player 1 has current 20 morale; adding 1 new morale 2020-04-14T20:01:37 FYLS [LOG] MORALE: team Player 1 now has 21 morale 2020-04-14T20:01:37 FYLS [LOG] MORALE: TargetTeam team change = + morale 2020-04-14T20:01:37 FYLS [ERROR] CRITICAL ERROR, PLEASE REPORT: Delegate OnAttackSequenceEnd - Standard for message type OnAttackSequenceEnd failed with exception Object reference not set to an instance of an object at CBTBehaviorsEnhanced.HullIntegrity.AttackDirector_OnAttackSequenceEnd+<>c.b3_0 IRTweaks is a prefix, so wouldn't that fire before the only Postfix in this case? Yeah, the HI patch is on the turret. Still need to be fixed, but I doubt it's driving the error in the ME stacktrace. CptMoore04/15/2020 ME component explosions assumes to be part of an attack sequence, and vanilla code i think so too. so if thats missing thats the null reference exception origin SupportBot BOT 04/16/2020 Ticket Closed by @Grey W :bookmark_tabs: Save transcript :unlock: Reopen Ticket :no_entry: Delete Ticket FrostRaptor04/16/2020 @CptMoore I'll double check my code to see if it could cause an attack sequence that doesn't exist. CptMoore04/16/2020 I checked again, the attack sequence has to exists otherwise ME would already crash, I didn't figure out what possible could be null. weapon can't be cause its generated by ME. hitinfo can't be null either, thats where the attackSequenceId is being retrieved. I was thinking of creating a prefix logger that just logs out all parameters on catched exceptions maybe another mod that patches DamageLocation modifies some of the parameters FrostRaptor04/16/2020 So maybe CBTBE... I'll look