Git Product home page Git Product logo

cbtbehaviorsenhanced's People

Contributors

ajkroeg avatar cmission avatar donzappo avatar iceraptor avatar redbatz avatar wmtorode avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cbtbehaviorsenhanced's Issues

Ammo explosion on mech that has no ammo

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 😦
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

Preview does not update modifiers

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.

Units do not cool when bracing w/o moving

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.

In non-interleaved, brace on a jump

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

Show HeatsinkCapacity in the Heat Panel

Basically a way to give more information to players to show them their current heat sink capacity (like in a bad biome or when hit with infernos that reduce it etc)

20200106232614_1

Add stats to modify effects

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

Error with Swarm LRMs in BTA cause NRE

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 

During non-interleaved mode, all units can act

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.

Mechs not acted autobrace when transitioning between Out-of-combat to In-combat turn systems

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.

output_log.txt

cleaned_output_log.txt

ModTek.log

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

Ending combat drops you out of combat mode, despite having units left to move

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.

Large Heat Bar Back Plz

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.

NRE in OnAttackSequenceBegin

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

The first unit after entering interleaved combat cannot fire after sprinting

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

NRE in HullIntegrity patches

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 

Change PSR on stability roll logic

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

CAC watchdog can kill attack sequences, leave CBTBE in an error state

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.List1[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.

HullIntegrity NRE

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 

HullIntegrity NRE

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 

Flag for Double Ammo Explosion Chance

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

Hitting done during non-interleaved mode causes error

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.

Is no-brace on enemy contact still intentional

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

KMission reports I shouldn't be using Debug_DamageLocation

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.

Overheated unit with ammo in both legs dies in fire, causes softlock

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

WalkSpeed and RunSpeed should be normalized to TT rules

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:

Heat dialog does not correctly display potential heat

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.

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

.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.

Error with hull integrity - NRE

``
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

AI doesn't overheat effectively

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.

Internal component destruction is ignoring CC ignore_damage flag

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.

CBTBE_RunMultiMod doesn't apply

@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...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.