battletechmodders / cbtbehaviorsenhanced Goto Github PK
View Code? Open in Web Editor NEWApplies Classic BattleTech behaviors to the HBS BattleTech Game
License: MIT License
Applies Classic BattleTech behaviors to the HBS BattleTech Game
License: MIT License
As what it says on the tin - change the melee text to represent the type of attack to be done
From #closed-3496
I got a message that ammunition exploded on the mech, but it doesnβt have any ammo
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
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
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 π¦
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.b__3_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.b__3_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
π Save transcript
π Reopen Ticket
β 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
From BTR jump-jump-modifier-ticket-0211:
+2 jumped-self modifier is not included in predicted accuracy while plotting movement. i.e. plotting a potential move predicts the same accuracy from any given location regardless of whether you jump or walk. If you actually, jump, the debuff then applies and accuracy is reduced as intended (resulting in a bit of a surprise for the player!)
I won't bother with logs, it's utterly trivial to reproduce.
Multiple reports of a vanilla bug where units will not go through a heat-sink cycle if they do not move and just brace. Apparently this results in your temps never decreasing.
Interactive Rubber DolphinToday at 8:43 PM
@FrostRaptor just a thought for consideration: jumping grants instability. Instability usually can be removed by bracing. You canβt brace in out of combat. Jumping in non-interleaved leads to big instability increases because of that. Maybe autobrace on such jumps?
Addressed to you because CBTBE does all the proper non-interleaved interactions
Pre request from BD - make independent of Hull Integrity breaches on lunar/martian?
From #ticket-3580 in RT discord:
the overheated enemy mech turned on even though it failed the check
i think its bug
MechTurnedOnIgnoringCheckFail.zip
When making a called shot after a melee attack, the called shot will use the hit table of the melee attack. Need to resolve it.
Reported in #closed-3269 on RT server - user notes that the OVERHEAT WARNING is showning even though the overheat bar doesn't indicate an overheat.
https://cdn.discordapp.com/attachments/691060822406987796/691061266042847252/20200321173539_1.jpg
Need stats that ignore heat values for each effect (ammo exp, pilot injury, shutdown, etc).
Need stat that provides additional bonus beyond guts/piloting for checks
From Tstir in BTA #tech-support form:
So, I've run into an issue that it seems @vidarion ran into last Wednesday with Swarm LRMs. Just had the same thing happen to me, in which you use Swarm LRMs to attack ground, the missiles will strike their targets, and then the unit gets stuck. Can't move it, can't end turn, nada. The only thing I could see that might be a cause, is with the Swarm targeting, missiles were impacting mechs that were in the fog of war and not on sensors. At least to my knowledge, if they popped up as a sensor blip, they worked okay, and if the mech was in range of the swarm retargeting off a miss but was in the fog completely obscured, bam! That unit is toast and you effectively need to restart the mission, or withdraw.
Had the same bug last night on a flashpoint I was doing and thought it was a fluke, tried not to use it too much. Since I've had a bit more time today, did a few more missions and played around with attack ground and seemed to work fine. However, when I just tried it as of a few minutes ago, same error occurred when I was damn-near done with a different flashpoint. The auto-targeting mechs that are close to sensor blips but still in the fog seems to be the only thing that I can think of that are the same, or could be the cause as I did see damage blips in the black when my poor Orion turned into a vegetable on me.
NullReferenceException: Object reference not set to an instance of an object
at CBTBehaviorsEnhanced.HeatHelper.DesignMaskHeatMulti (BattleTech.Mech mech, System.Boolean isProjectedHeat) [0x00233] in <5ff2fe1a828c49df96fd57fb7aea4752>:0
at CBTBehaviorsEnhanced.HeatHelper.NormalizedAdjustedHeatSinkCapacity (BattleTech.Mech mech, System.Boolean isProjectedHeat, System.Boolean fractional) [0x00013] in <5ff2fe1a828c49df96fd57fb7aea4752>:0
at CBTBehaviorsEnhanced.HeatHelper.CalculateHeat (BattleTech.Mech mech, System.Int32 projectedHeat) [0x0003c] in <5ff2fe1a828c49df96fd57fb7aea4752>:0
When a unit moves into contact, the lance-mates can still activate and move and attack. This is obviously overpowered, so make it so that contact immediately ends the activation of other lance-mates.
When the first mech in your lance moves from Out-of-combat to In-combat and triggers the combat turn system, any of your mechs that have not yet acted in that Out-of-combat turn automatically end their turn and Autobrace, thus losing all of their current Evasion pips that they may have built up.
This can cause major issues when, for example, the newly encountered enemy lance has better initiative and then rush your lance members with zero evasion on that first combat turn.
See a video of this issue occurring here: Link
In the video none of the mechs have currently moved in this Out-of-combat turn but all have built up Evasion pips on the previous Out-of-combat turn. The Grasshopper piloted by 'Bast' is the first lance member to move in this Out-of-combat turn and encounters the OpFor and triggers the switch from Out-of-combat to In-combat. This switch causes all the other lance members to automatically end their turn and 'Guard' but lose all their Evasion pips doing so.
Logs attached: I loaded the game, loaded a career save and started and restarted a couple of missions to spawn in locations that would cause this issue. Then I forced the issue by moving the mechs as shown in the video. I completed 1 turn of In-combat and then quit the game to desktop. Hopefully that background may help identifying where the issue may lie.
Potential culprit area may be: https://github.com/IceRaptor/CBTBehaviorsEnhanced/blob/master/CBTBehaviorsEnhanced/CBTBehaviorsEnhanced/Patches/MovementPatches.cs#L75-L125 ???
If you'd like me to set up a completely Vanilla install only with CBTBE and ModTek installed to get some logs and reproduce please let me know.
Thanks for all your work and efforts :D
Reported on BTA discord - movement penalties from heat seem to increase speed, not decrease it.
This is a QoL issue, not a serious problem, but it'd be nice. Essentially, when you kill the last enemy unit around, you drop out of combat mode instantly, regardless of if you have other units who have not yet acted. Letting them end the turn in combat mode ensures no one is getting left behind and you don't need to waste a turn just bringing everyone up together.
Again, minor QoL issue, though it's one I'd personally like to see.
It's not mission critical, but I would like to see the large heat bar make a return, overheat indicator be damned. I'd be fine with it just being partway down the bar oddly, that's fine by me really. Just consider it, it's not mission critical or anything.
From RT #ticket-3267:
Playing Osmium Beta 1.1, had no issues with install at all
currently in an escort mission (1.5 skulls vs lance with .5 skulls) and stuck on turn 23, phase 12
my escort targets just lamented my missing mechs near their vicinity and now the game is stuck
it is still their (ally) turn
HarkonnenLast Saturday at 11:55 PM
cac_main_log from customammocategories
and cbt_behaviors_enhanced.log from CBTBehaviorsEnhanced
2020-03-21T22:44:03 FYLS [ERROR] CRITICAL ERROR, PLEASE REPORT:
Delegate OnAttackSequenceBegin - Standard for message type OnAttackSequenceBegin failed with exception
Value cannot be null.
Parameter name: OnAttackSequenceBegin received invalid sequenceID: 29602300
at (wrapper dynamic-method) BattleTech.AttackDirector.OnAttackSequenceBegin_Patch1(object,MessageCenterMessage)
at MessageCenter.SendMessagesForType (MessageCenterMessageType messageType, MessageCenterMessage message) [0x00037] in <4184af8dbeb4
4635831353f4d349631c>:0
Multiple reports on the RT discord support channels of this behavior:
I have run into an issue where the first turn after "contact" my mechs cannot fire after sprinting. They can fire after movement just fine, but when sprinting the los line is greyed out and the turn ends after sprinting. This has occurred 3 times, this is the first time I've gotten the appropriate logs.
cmdr_dazed
update, it looks like it's always only the first mech that I use after the contact.
the others (different initiative) can fire after sprinting
As per title... jump distances are being impacted by heat, and they should not.
Reported in ticket-3435 on RT discord:
2020-04-08T16:46:26 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.<ResolveTurretHullBreaches>b__3_0 (BattleTech.MechComponent mc) [0x00006] in <d5abd8016f094a7ab65c144b8f36957c>:0
at System.Linq.Enumerable+WhereListIterator`1[TSource].ToList () [0x00017] in <1b13ba6391c74847bbc3eddc86df7eee>:0
at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <1b13ba6391c74847bbc3eddc86df7eee>:0
at CBTBehaviorsEnhanced.HullIntegrity.AttackDirector_OnAttackSequenceEnd.ResolveTurretHullBreaches (BattleTech.Turret targetTurret) [0x0002d] in <d5abd8016f094a7ab65c144b8f36957c>:0
Currently PSRs on instability aren't working quite right. They take the weapons instability delta and make a PSR against it. Unless a weapon does a significant delta, it's unlikely for the pilot to fail - making these relatively pointless.
Change it to aggregate all of the stab damage across the whole of the attack sequence, and check on that delta instead.
See https://github.com/BattletechModders/CBTBehaviorsEnhanced/blob/master/CBTBehaviorsEnhanced/CBTBehaviorsEnhanced/Patches/PilotingPatches.cs and https://github.com/BattletechModders/CBTBehaviorsEnhanced/blob/master/CBTBehaviorsEnhanced/CBTBehaviorsEnhanced/Helper/MechHelper.cs
From RT #closed-3622:
Jamie Wolf, Maker of Server05/11/2020
escort mission locked up after a dialog from the convoy appeared
Attachment file type: archive
rtlogs.zip
16.35 MB
on a quick look, I see this
2020-05-11T02:29:19 FYLS [ERROR] Failed to modify AttackOrder evaluation due to error: Object reference not set to an instance of an object
2020-05-11T02:29:19 FYLS [ERROR] Source:CleverGirl StackTrace: at CleverGirl.AIHelper.CalculateWeaponDamageEV (CleverGirl.CondensedWeapon cWeapon, BehaviorTree bTree, CleverGirl.AIHelper+AttackParams attackParams, BattleTech.AbstractActor attacker, UnityEngine.Vector3 attackerPos, BattleTech.ICombatant target, UnityEngine.Vector3 targetPos) [0x00330] in <8f44473afe474fc99d7aa62291a8f59f>:0
at CleverGirl.AIHelper.ExpectedDamageForAttack (BattleTech.AbstractActor unit, AIUtil+AttackType attackType, System.Collections.Generic.List1[T] weaponList, BattleTech.ICombatant target, UnityEngine.Vector3 attackPosition, UnityEngine.Vector3 targetPosition, System.Boolean useRevengeBonus, BattleTech.AbstractActor unitForBVContext) [0x00092] in <8f44473afe474fc99d7aa62291a8f59f>:0 at CleverGirl.AttackEvaluatorHelper.EvaluateAttacks (BattleTech.AbstractActor unit, BattleTech.ICombatant target, System.Collections.Generic.List
1[System.Collections.Generic.List`1[CleverGirl.CondensedWeapon]][] weaponSetListByAttack, UnityEngine.Vector3 attackPosition, UnityEngine.Vector3 targetPosition, System.Boolean targetIsEvasive) [0x000ef] in <8f44473afe474fc99d7aa62291a8f59f>:0
at CleverGirl.Patches.AttackEvaluator_MakeAttackOrderForTarget.Original (BattleTech.AbstractActor attackerAA, BattleTech.ICombatant target, System.Int32 enemyUnitIndex, System.Boolean isStationary, BehaviorTreeResults& order) [0x0030b] in <8f44473afe474fc99d7aa62291a8f59f>:0
at CleverGirl.Patches.AttackEvaluator_MakeAttackOrderForTarget.Prefix (BattleTech.AbstractActor unit, BattleTech.ICombatant target, System.Int32 enemyUnitIndex, System.Boolean isStationary, BehaviorTreeResults& order, System.Single& __result) [0x0000f] in <8f44473afe474fc99d7aa62291a8f59f>:0
and this
2020-05-11T02:29:36 FYLS [ERROR] MessageCoordinator errors detected!
ExpectedMessage 0 ExpectedImpact Completed = False, StoredEarlyMessage = False, SentEarlyMessage = False, ClearedForProcessing = False, TimesClearedForProcessing = 0
Group = 0, Weapon = 0, Shot = 0
ExpectedMessage 1 ExpectedImpact Completed = False, StoredEarlyMessage = False, SentEarlyMessage = False, ClearedForProcessing = False, TimesClearedForProcessing = 0
Group = 0, Weapon = 0, Shot = 2
ExpectedMessage 2 ExpectedImpact Completed = False, StoredEarlyMessage = False, SentEarlyMessage = False, ClearedForProcessing = False, TimesClearedForProcessing = 0
Group = 0, Weapon = 0, Shot = 3
ExpectedMessage 3 ExpectedResolveDamange Completed = False, StoredEarlyMessage = False, SentEarlyMessage = False, ClearedForProcessing = False, TimesClearedForProcessing = 0
Group = 0, Weapon = 0
2020-05-11T02:29:48 FYLS [LOG] PlayNextMessage: message count 1
2020-05-11T02:29:48 FYLS [LOG] Dialogue: castDef_DariusDefault: They aren't wrong, Commander. They're sitting ducks without our support. audio[NONE]
2020-05-11T02:29:51 FYLS [LOG] PlayNextMessage: message count 0
2020-05-11T02:29:51 FYLS [LOG] Convoy Moving Interrupt Played. Play Async. .DialogueMatchesConditional - Evaluating message[OnDialogueComplete]
2020-05-11T02:29:51 FYLS [LOG] Convoy Moving Interrupt Played. Play Async. .DialogueMatchesConditional - FAILED - DialogueGuid didn't match
2020-05-11T02:29:51 FYLS [LOG] Convoy Escorted Interrupt Played. Play Async. .DialogueMatchesConditional - Evaluating message[OnDialogueComplete]
2020-05-11T02:29:51 FYLS [LOG] Convoy Escorted Interrupt Played. Play Async. .DialogueMatchesConditional - FAILED - DialogueGuid didn't match
2020-05-11T02:29:51 FYLS [ERROR] [OnAttackSequenceBegin] invalid sequence ID: 98775461
2020-05-11T02:29:51 FYLS [ERROR] CRITICAL ERROR, PLEASE REPORT:
Delegate OnAttackSequenceBegin - Standard for message type OnAttackSequenceBegin failed with exception
Value cannot be null.
Parameter name: OnAttackSequenceBegin received invalid sequenceID: 98775461
at (wrapper dynamic-method) BattleTech.AttackDirector.OnAttackSequenceBegin_Patch1(object,MessageCenterMessage)
at MessageCenter.SendMessagesForType (MessageCenterMessageType messageType, MessageCenterMessage message) [0x00037] in <4184af8dbeb44635831353f4d349631c>:0
2020-05-11T02:29:51 FYLS [WARNING] Sequence not found for OnAttackBegin
2020-05-11T02:29:51 FYLS [LOG] Null sequence on attack begin!!!
Damien Killjoy05/11/2020
@Suspicious_Tinn your bot has escaped
Suspicious_Tinn05/11/2020
Not enough space in current support channel
LB05/11/2020
The clevergirl error I'm pretty sure I remember Granner or Harkonnen saying is a non-error error the message coordinator likewise and has existed as long as I've been looking at logs, the last one there I have seen but don't know if it's a problem
Jamie Wolf, Maker of Server05/11/2020
Mission died so I assume something happened, but maybe it has nothing to do with those logs
LB05/11/2020
I'm relearning what is normal in the logs and what is a 'oh crap'
Jamie Wolf, Maker of Server05/11/2020
I can tell what's oh crap in logs for the mods I look after, but beyond that, not really
Interactive Rubber Dolphin05/11/2020
The last one sounds like a oh shit
Harkonnen05/11/2020
@kmission @FrostRaptor same thing again. Something went wrong, CAC watchdog kills attacksequence, CBTBE crap itself.
Reported in ticket-3496 on RT discord:
2020-04-14T20:33:27 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.<ResolveTurretHullBreaches>b__3_0 (BattleTech.MechComponent mc) [0x00006] in <d5abd8016f094a7ab65c144b8f36957c>:0
at System.Linq.Enumerable+WhereListIterator`1[TSource].ToList () [0x00017] in <1b13ba6391c74847bbc3eddc86df7eee>:0
at System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) [0x0001f] in <1b13ba6391c74847bbc3eddc86df7eee>:0
at CBTBehaviorsEnhanced.HullIntegrity.AttackDirector_OnAttackSequenceEnd.ResolveTurretHullBreaches (BattleTech.Turret targetTurret) [0x0002d] in <d5abd8016f094a7ab65c144b8f36957c>:0
at CBTBehaviorsEnhanced.HullIntegrity.AttackDirector_OnAttackSequenceEnd.Postfix (BattleTech.AttackDirector __instance, MessageCenterMessage message) [0x00153] in <d5abd8016f094a7ab65c144b8f36957c>:0
at (wrapper dynamic-method) BattleTech.AttackDirector.OnAttackSequenceEnd_Patch1(object,MessageCenterMessage)
at MessageCenter.SendMessagesForType (MessageCenterMessageType messageType, MessageCenterMessage message) [0x00037] in <4184af8dbeb44635831353f4d349631c>:0
Reported in RT ticket-2719 and ticket-2712
2020-01-12T16:41:35 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.Postfix (BattleTech.AttackDirector __instance, MessageCenterMessage message) [0x00027] in <185c52a92410424f8ed81cd62b2574c1>:0
at (wrapper dynamic-method) BattleTech.AttackDirector.OnAttackSequenceEnd_Patch1(object,MessageCenterMessage)
at MessageCenter.SendMessagesForType (MessageCenterMessageType messageType, MessageCenterMessage message) [0x00037] in <3a3b490f618743a4be67f60469483e7a>:0
KMission has a controllable vehicle demo, and has asked me to validate that CBTBE doesn't interfere with non-mech actors.
So after our little talk
A big issue is checking for HeatDamagerPerAmmo on ammo boxes as i use a mix of all 3 damages to balance explosions, not just for inferno rounds
A better more flexible way would be a new custom flag that when checked, defines this box as extra volatile (aka does the doubled roll)
And for other users, id say a toggle in mod.json between either method
edit
edit2 disregard this second part then, since you explained to me how stupid it would be, i be sad gameplay designer and accept the fate ;)
the ultimate option would be customcomponents flag for ammo boxes that makes them more or less likely to explode
Solution could be, roll is made, CBTBE checks all boxes for their chance, and detonates the first it has a "success" roll on
Reported on BTA discord -
There is a known issue with current movement rules. Specifically, when you are moving your pilots outside of combat and hit the done button before the animation of them moving is complete you will get a soft lock and will be unable to take further actions. Solution: don't do that. If you do accidentally, just restart the contract.
From rogueticket-230:
No brace on a jump In non-interleaved mode
In the last non-combat turn, in which the enemy was noticed, and after which the combat begins, there is no brace after jump.
The second typical case - after the end of the interleaved mode, when the non-combat mode is launched - no bracing after jumping.
Interactive Rubber Dolphin05/09/2020
yes, I believe the brace only happens when no enemy is detected
I think that is intentional
@FrostRaptor ?
Grey W05/09/2020
But what's the point? Suppose we destroyed one group of opponents, the battle is over and we are moving to the next group. Why is there no brace after contact with the first group of the enemy?
https://youtu.be/RXUIQK1ryCQ
YouTube
GreyW3
No brace in non interleaved mode
FrostRaptor05/09/2020
This is intentional, yes. It's to allow use of sensor lock and other abilities during the non-interleaved turn.
Basically, flexibility as you encounter the enemy.
That's the reason I was given when I was asked to make it this way.
Interactive Rubber Dolphin05/09/2020
but the turn autoends?
you don't get to do anything
am I missing something
FrostRaptor05/09/2020
Hurm
When you're in non-interleaved and there's an enemy present, it auto-ends?
Interactive Rubber Dolphin05/09/2020
yes
nothing changes I belive
Grey W05/09/2020
yes it auto ends
FrostRaptor05/09/2020
Hurm
Alright, I'll look at it.
I thought it was intentional. If it's not, I'll fix it.
Sorry for the hassle. Thanks for the report.
Grey W05/09/2020
glad to help
Add sample docs illustrating how to setup Piloting malus with https://github.com/BattletechModders/MechEngineer/blob/master/data/basic/criticalEffects/MechEngineer_LegActuators.json
From closed-3193 on RT discord:
DEBUG_DamageLocation is called
it is in stack trace
CBTBehaviorsEnhanced.Piloting.MechFallSequence_OnComplete.Prefix call it
so @FrostRaptor is in charge
it should not
no one should call DEBUG functions as normal behavior
[Chompypede] Crawly Owl is not cheater
FrostRaptor
he used debug function instead of writing normal one
Hurm. Okay, figured there would be no issue using the function called by the debug menu.
Sorry for the inconvenience @KMiSSioN
KMiSSioN03/13/2020
nm :slight_smile:
but you are still cheater :slight_smile:
FrostRaptor03/13/2020
I certainly cut corners when modding, no argument
FrostRaptor03/14/2020
@KMiSSioN I've spent some time looking through both sets of code (DamageLocation_DEBUG and DamageLocation) and - with the exception of some logging - they look very similar. Both invoke ApplyArmorStatDamage, ApplyStructureStatDamage to damage the unit. It looks like _DEBUG doesn't have damage propagation (via GetPassthroughLocation)
DamageLocation seems strongly associated with an AttackSequence as well, which is normal given that it flows from TakeWeaponDamage. But in this case (knockdown) that doesn't exist.
Is there something in particular that the _DEBUG function isn't doing that I should be aware of? I'm tracing the code and not seeing it.
In TT mechs must pass a skill check to restart when they are shutdown. Apply these semantics.
Some melee weapons (the mace in particular) cause piloting checks on a failed attack. See https://www.sarna.net/wiki/Mace for details. LA wants to replicate this, if possible.
Per ticket-3757 on RT discord:
This is about inferno mortars again: My recon mech with 6 pips and fitted with other defensive equipment got shot by mortar carrier with 5 of mortar 8 (c) inferno. It instantly got overheated to 80% of the bar. Next turn nor could I move him out of the fire nor could dissipate the heat. It showed 0 out 0 heat dissipation. The next round mortar moved first so I got hit again with mortar to full bar but I didn't shut down. When my turn came, I tried to move out of fire and instantly my both legs full of srm ammo exploded and stuck in that screen. I could not end turn, shoot (since fitted with Enchanced Imaging), brace, or anything to pass the turn to others. This is the second time happened exactly like this. I had to quit to desktop.
1 turn and my mech got destroyed again
Mortar appeared out of nowhere and booom, one mech down
In fact game bugged out second time due the both legs getting blown away from ammo explosion
I can recreate this game breaking bug over and over again since all it takes inferno mortar and ammo in the legs
J4N1C3P5
First round it overheats you and you can't dissipate, at least in martian biome, I mean even if I don't move and brace it won't go down even 1 heat. Second turn, due to enhanced imaging the pilot takes damage and lose initiative, mortar goes first and even it does not, since you cannot dissipate heat you will be standing there for enemies to shoot all over you, fills your bar to full and that's it. Every single time it happened exactly like this. You are dead in 2 turns.
Nothing in the game is this OP. And this situation happens almost exactly same every single time
Harkonnen
@FrostRaptor game softlock after ammo explosion
J4N1C3P5
4 mechs vs 4 inferno mortar: I would choose inferno mortars every time
FrostRaptor
Hurm, sadly - nothing obvious in the logs so far.
Probably related to CBTBE not doing pilot injuries on overheat / ammo explosion though?
J4N1C3P5
To clarify, after both legs get destroyed at the same time, mech does not get knocked down, seems to be still standing
But the portrait looks like the warrior got killed
And you can still target enemies but cannot shoot
From a discussion on RT crew:
@FrostRaptor conversation over in ME discord reminds me of couple things I noticed in CBTBE movement calcs.
1. in ME we assume single MP is 25 meters, in CBTBE in heat penalties the hardcoded (unless I am blind) assumption is 30 meters.
2. Run speed for odd numbers of MP should be rounded up, from what I see, you just do flat multiplication in meters
Maybe allow a setting for assumed distance per MP, and do rounding for RunSpeed from that?
like ceiling(runspeed/metersMP)*metersMP
FrostRaptorToday at 8:39 AM
@Interactive Rubber Dolphin I can certainly make the 30f a variable in config, that's easy enough
Does the round up actually change that much, given that runSpeed is a float?
Interactive Rubber DolphinToday at 8:40 AM
I assume pathfinder gives you available movement locations with it's own algorithm, but I have no idea how it works
FrostRaptorToday at 8:41 AM
I'm still early in my coffee and half-listening to a boring work meeting
But if your speed is 5/7, that's ... what 5*25 = 125 base
125 * 1.5 = 187.5
Interactive Rubber DolphinToday at 8:41 AM
187.5 vs 200
I dunno if it's a big enough difference for you not reaching needed hex
considering it's 3d distance
FrostRaptorToday at 8:42 AM
Where are you getting 200, I'm not following?
Interactive Rubber DolphinToday at 8:42 AM
"""hex""""
because TT movement is 5/8
not 5/7
8*25 = 200
FrostRaptorToday at 8:43 AM
So... Math.Round(5*1.5) * factor
Interactive Rubber DolphinToday at 8:44 AM
Yes
FrostRaptorToday at 8:44 AM
Hurm
Interactive Rubber DolphinToday at 8:44 AM
I mean, you don't convert walk to MP currently
FrostRaptorToday at 8:44 AM
Right
I'd actually need to do something like Round(walkSpeed / factor) == walkMP
Round(walkMP * 1.5) == runMP
RunDistance = runMP * factor
God I fucking hate TT
Interactive Rubber DolphinToday at 8:45 AM
so you can do that on modified runspeed using the thing I proposed, no?
math.ceiling(runspeed/factor)*factor
FrostRaptorToday at 8:47 AM
Sure.
Interactive Rubber DolphinToday at 8:47 AM
or probably round, yes
FrostRaptorToday at 8:47 AM
Does that have weird knock-on effects with the different engine sizes?
Interactive Rubber DolphinToday at 8:48 AM
yes, now that I think about it round would be better for different sizes
FrostRaptorToday at 8:49 AM
So that's going to leave the 'weird' behavior
Interactive Rubber DolphinToday at 8:49 AM
In general it should pretty handily only change runspeed on tonnage increments
FrostRaptorToday at 8:50 AM
Where someone gets the weird hex breakage if they have an engine that's not above the breakpoints
Well, walkSpeed is going to change but runSpeed won't?
Because we're normalizing runSpeed to TT rules, but not walkSpeed?
Interactive Rubber DolphinToday at 8:51 AM
Sure, our usual line is "it might have a difference sometimes, but usually better stick to tonnage"
Okay, so, considering it's CBT behaviours, and you can't have fractional MP in CBT... normalize both?
FrostRaptorToday at 8:53 AM
Man, I walked into that one, didn't I?
sigh
Interactive Rubber DolphinToday at 8:53 AM
then we can say for certain that fractional tonnage engines don't do anything :wink:
I think that is supported by my reading of CBT rules (at least as written), and I have seen players confused, expecting a very heavily overheated mech to explode.
From #closed-3429 on RT discord:
DrBwaa reporting.
===== WEIRD OVERHEATING =====
Same battle, a turn or two later. A mostly pristine mech just suddenly decided not to sink most of its heat. Three screenshots incoming, then logs.
Just showing my loadout and location. Nowhere near fire, haven't moved or anything.
.I still get this issue every mission or two. Anything else y'all need from me?
I can keep sending logs if there's any chance it'll be helpful
Interactive Rubber Dolphin04/14/2020
We are waiting on frosty to get some time to check it out
DrBwaa04/14/2020
π I'll stay attached for the time being then. Thanks y'all.
FrostRaptor04/14/2020
So the bug specifically is that the text only shows a sinking of -9, but the heatbar is working correctly?
@DrBwaa is that correct?
DrBwaa04/14/2020
@FrostRaptor The bug is that there's no reason this mech should only be sinking -9 instead of -39.
About half the time when I get this, I seem to sink my full amount anyway. The rest of the time (as above), I only sink whatever the estimate tells me I will, gaining lots of net heat that I shouldn't be gaining.
FrostRaptor04/14/2020
Hurm, okay
Are you noticing any similarities between the two different cases?
Like, the first case happens when you don't go through fire, the second when you do, etc
If not, no problem - just grasping for straws here.
The code in question is fairly complex and works between my code and CAC.
DrBwaa04/14/2020
No, it seems to be completely random. It does tend to only happen on mechs running LRMs (that I've noticed), but nothing else seems to make a difference. Often they haven't even moved.
It's possible I only notice it on my longer range mechs just because they are normally nowhere near fire or enemies so when they have heat problems it's really obvious that something is wrong.
FrostRaptor04/14/2020
Hurm, okay. Thank you for the details, they are very helpful!
DrBwaa04/14/2020
Sure thing! Do you want me to keep CBTBE debug on and send more logs, or not worry about it?
FrostRaptor04/15/2020
You can flip it off Debug. I have enough information to start working through the code.
``
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.Postfix (BattleTech.AttackDirector __instance, MessageCenterMessage message) [0x00023] in :0
at (wrapper dynamic-method) BattleTech.AttackDirector.OnAttackSequenceEnd_Patch1(object,MessageCenterMessage)
at MessageCenter.SendMessagesForType (MessageCenterMessageType messageType, MessageCenterMessage message) [0x00037] in <3a3b490f618743a4be67f60469483e7a>:0
User ran into this upon knocking down a banshee, it toke enough head damage to be killed with an NRE at that time.
I'm overriding the overheat and maxHeat thresholds, but not eliminating them. Do they get modified when the equipment gets destroyed? Should there be a warning to mod developers to not use these values.
destroyed the leg on the jenner, it falls then starts to slide around instead of standing back up
output_log.txt
cleaned_output_log.txt
harmony_summary.log
ModTek.log
2020-02-29T13:01:26 FYLS [LOG] Actor Jenner (358c5692-25ee-433b-b9ce-bab9ae35528e.0) - Jenner (358c5692-25ee-433b-b9ce-bab9ae35528e.0) FLAGGED FOR KNOCKDOWN!
As the title suggests, AI Mechs can restart immediately after failing a shutdown check.
Seems to happen if an AI Mech is so overheated that they only move on their turn, without taking a shot.
Attached logs demonstrate a Shadowhawk doing exactly that.
HeatRestartBug.zip
Units that drop due to melee attacks retain their evasion pips. They should be flushed when this happens.
JumpJet movement is currently impacted by designmasks. This means you can't jump your full distance when you're in a forest. That's stupid and should be fixed.
I'm pretty sure the problem with the AI and heat is that I've not yet patched the method that checks for an 'acceptable' heat. It's on my list for CleverGirl or CBTBE. The method AIUtil::GetAcceptableHeatLevelForMech is what's invoked during the AI calculations, it relies upon Overheat level and MaxHeat. Since Overheat is set to 42 (of 150) that's far too low. There's also a multiplier that needs to be considered.
Just what it says on the tin: we think that CBTBE's heat based internal component destruction is ignoring the CustomComponents ignore_damage flag. This can cause a rare pseudo-softlock when a component is destroyed that gives the unit bonus structure and the loss of that bonus structure leads to the death of the unit. The game doesn't recognize what happened and the unit becomes a half-dead/half-alive zombie unit.
If the target dies to a charge, the attacker doesn't take cluster damage. Find out why.
@FrostRaptor this
{
"statName" : "CBTBE_RunMultiMod",
"operation" : "Set",
"modValue" : "3.0",
"modType" : "System.Single"
},
doesnt work. nothing in log aout run with enabled debug, so the codepath you showed is not hit...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.