• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
@Amechwarrior I'm using your better AI mod, but would also like to use your permanent evasion. I put in in my mods folder and unzipped, but that didn't seem to work. Am I missing something?

Best,

Mad

My Perm Evasion Add-On? It should overwrite the BetterAI global.json for AI stuff. It doesn't actually enable perm. evasion, just to be used along side the mod proper. I don't maintain the Perm.Evasion or it's forks. I'll give the Add-On some more attention and make sure everything is right with it tonight.
 
So, it seems the Scout role can be given to up to 3 units in a Lance now. I remember it only working for one unit before. This allows Lances to operate with 3x Scouts and 1 Sniper/Brawler. With 4x Scouts, it lasted one round and then reverted to 4x Brawlers and never recovered. I might have to test 3x Scout 1x Sniper and take the Sniper down first to see if a Lance becomes all Scouts will swap to all Brawlers or if there is just a limit on more than 3 Scouts in a Lance.
 
I've managed to get inside the FP assetbundle and seen what the new units are set to with AI tags, it's nothing. Only the HTC-3F is declared "unit_role_brawler" and none of them have any role tags for dynamic roles or even unit_lance tags for spawning in specific roles for lancedefs. This might be due to Kiva's comment about getting them to show up right in lancegen during the pre-release QnA livestream. However, this does limit them from appearing in any defined slot in a Lancedef like Tank or Vanguard. The AI logging shows all of them will pull the "Brawler" role on the field. I'm probably going to see if I can get ModTek to merge some new tags in and declare them roles.

The planned breakdown would be:
  • HTC-3F - Brawler
    • I'd love a proper "Flanker" role for this guy, Scouts are too low on the melee scaling but I want an "Ambush Assassin" that moves like the scouts without the fear of being killed instantly by punch
    • CT ammo and really low armor are poorly suited for Brawlers but it's the only chance it would be able to bring the hatchet to bear
  • CRB-27 - Brawler
    • 5/8 speed (with cFixes, which I'll link and recommend in the OP soon), good armor, no ammo and no min.range weapons - perfect combo for a knife fighter
  • BSC-27 - Brawler
    • Flashpoint Special - Not touching this one, but Brawler fits for his job title anyway
All of these are fairly strait forward so far. Which only leaves the Cyclops, which is a conundrum.
  • CP-10-Q - Sniper
  • CP-10-Z - Sniper
Why not Brawlers? They are assaults and have mostly ML ranged weaponry, the BC on the Q also helps it brawl by acting first.
  • CT ammo on both variants, called shot magnet as soon as they enter LoS
  • Critically low armor and ammo in both side torsos on both models, this thing is a triple torso bomb unlike no other 'Mech in the game
  • Literally the same armor as a HBK-4G on a frame almost 2x as massive for the Z model
  • BC assists team more than the individual, it easily becomes the prime target when it shows up as knocking that out evens the init playing field between sides, it needs to stay in play as long as possible for the team
  • The Q model was built to allow commanders to stay back according to Sarna and the TROs, even if it has enough armor to be up front
  • This is a Command 'Mech, in general it would have been babied for its intact BC in lore and the Q used by Commanders who want to stay just far enough away
I think I can get them to stay just at the rim of ML range if I know my settings well enough. The massive damage on the AC/20 could incentivize the Z's AI to get just inside max range and in the least visible spots according to my sniper variables. This will mean when they are the largest unit on the field they won't be up front sharing armor like an Assault should. But this guy is a special case in the lore and it could act like it with the Sniper role. The lore also states ones with broken BCs would act as decoys for the real Commander or be forced to preform normal Assault duty anyway. But, all of our Z's will have fully functional BC's.

Any opinions on the roles?
 
for the mediums i think you have nailed it.

and yes the CPs need to be snipers to keep them back.
But i think with the CP what we really need is a @Justin Kase capellan variant of the Z with a command console and a @Dr. Banzai A variant with the gauss rifle.
 
Had a good fight today with 8 full armor Lights vs my FS9, PNT, VND and HBK-4G, using the daily-test branch but not much changes from main. I'd nearly wreck an individual and it would flee if I hadn't used P.Strike on it the turn before and inadvertently, the other lights would move in to take their spot. It kept me from closing the killshots on a lot of them short of the weaker LCT variants. At the end, they all died in really quick succession as all were hurt, but each of them getting to fire one at a time was much harder to mitigate vs fewer numbers of well armored lights I could have concentrated my P.Strikes on to deny a higher % of return fire.

This is a case where the lower skittishness and vulnerability triggers worked perfectly. It felt like they had pilots who cared to live or not lose their machines out from under them. It also ended up keeping more of them alive longer.

I will need to retest the bulwark math, I've noticed some Lights with Defender pilots staying still in the trees right next to me. I think the bulwark AI code is still thinking it works like pre1.3 and need to confirm that.
 
@unclecid I did release a Gauss Cyclops pretty much right after Flashpoint release on Nexus. Currently working on an update to HCD and then moving on towards a joint venture project including Amechwarriors AI.
 
@unclecid I did release a Gauss Cyclops pretty much right after Flashpoint release on Nexus. Currently working on an update to HCD and then moving on towards a joint venture project including Amechwarriors AI.

i see..havent seen any assaults yet in my current playthu.

ill look it up and add it to a test run im gonna do with JKs CP
 
So it seems the old Bulwark = standing still logic is in play a little bit. Ran a 99, 40 (stock) and 0.0 in skirmish with all Bulwark pilots. On the Lunar map, this didn't seem to trigger them to stand still as much as it did on Plateau Valley. I also upped the global weight to stay on guarded dots just a little as I was easily able to bait the AI out of the forests they didn't need to leave to shoot me.

All of the changes should be in the test branch if anyone wants to play with them.
 
I've edited the [Mod edit: No unapproved links, please] (click "Clone or Download" and download the .zip, extract in to current Better AI mod folder) to try and work on the scared scouts. I'm not there yet, but I want to ask for some feedback if it's going in the right direction.
 
will give it a looksee today
 
1.4.0 Release for BT 1.3.2
Better AI 1.4.0 [mod edit, no unapproved linking, please] - For Battletech 1.3.2

Instructions:
For older versions - Delete old Better AI folder in BATTLETECH\Mods
Copy BetterAI-1.4.0 in to the BATTLETECH\Mods folder.

This version is fully tuned to the new AI and mechanics found in the 1.3 update. Every role has gone through testing and adjustments. One big change is the addition of edits to the CombatGameConstants.json file. The AI now has the same chance to score a Critical Hit as the player (from 0.2 to 1.0) and I've edited some of the limits to how many of each dynamic role may be in a Lance.

I highly recommend using this in conjunction with cFixes. The community fixes add in missing tags for the new Flashpoint 'Mechs and work together with Better AI. Make sure Better AI is loaded after cFixes by editing the order in BATTLETECH\Mods.modtek\load_order.txt. You can also simply remove Better AI, launch and exit the modded game with cFixes, and replace the Better AI folder to add it to the end of the load order list.

1.4.0 Full Change Log -

HBS Dev Comments added to all files

Removed blank files to minimize mod footprint
  • role_brawler_def
  • role_lastmanstanding_def.json
  • role_meleeonly_def
  • role_noncombatant
  • role_noncombatant_def
  • role_scout_def
  • role_sniper_def
  • role_turret
  • role_turret_def
  • skill_reckless
  • skill_reckless_def
Variables Adjusted from Better AI 1.3.3:

CombatGameConstants.json - ADDED
  • "AICritChanceBaseMultiplier": 1.0 from Stock = 0.2 - AI has same Crit Chance as Player
  • "sniperMaxFrac": 0.75 from Stock = 0.5 - Lance can have 3/4th Snipers or 2/3rd Snipers instead of only 2/4 and 1/3

global.json
  • Float_ExistingTargetDamageForOverheatAttack 90.0 from 0.0 - HBS fixed overheating and I didn't have to change this one much from stock
  • Float_PreferLowerMovementFactorWeight -0.9 from -0.7 - Greater Pip building for 1.3 Evasion
  • Float_PreferHigherExpectedDamageToHostileFactorWeight 3.25 from 4.0 - Lowered aggression to increase defensive positioning
  • Float_VentCoolantHeatThreshold 1.99 from 2.1 - Trigger Coolant Vent slightly sooner
  • Int_VentCoolantHealthThreshold 1 from 2 - Old value from when it caused injury, set it to 1 just in case
  • Float_PreferInsideMeleeRangeFactorWeight -1.25 from -0.5 - AI needs to fear a player operated HTC
  • Float_SprintPreferInsideMeleeRangeFactorWeight -1.5 from -0.7 - AI needs to fear a player operated HTC
  • Float_PreferLocationsThatGrantGuardFactorWeight 1.5 from 1.4 - Greater tree hugging for 1.3 damage reduction
  • Float_SprintPreferLocationsThatGrantGuardFactorWeight 1.5 from 1.25 - Greater tree hugging for 1.3 damage reduction
  • Float_BulwarkThresholdPercentage 0.0 from 80 - Nullified old Bulwark logic
  • Float_OverkillThresholdLowForRearArcPositionFactor 40 from 50 - Lowered acceptable levels to promote rear protection
  • Float_OverkillThresholdHighForRearArcPositionFactor 60 from 75 - Lowered acceptable levels to promote rear protection
  • Float_PreferLethalDamageToRearArcFromHostileFactorWeight -2.0 from -1.75 - Increased fear of units behind AI
  • Float_MinimumSensorLockQuality 55.0 from 60.0 - Slightly larger chance for non-scouts to Lock
  • Float_OpportunityFireExceedsDesignatedTargetByPercentage 20.0 from 25.0 - Returned to Stock value
  • Float_PreferStationaryWhenHostilesInMeleeRangeFactorWeight -0.75 from -0.5- AI needs to fear a player operated HTC
  • Float_PreferAttackFromBehindHostileFactorWeight 0.4 from 0.3 - Small bump to attacking the rear arc
  • Float_SprintPreferLOSToMostHostilesFactorWeight 0.2 from 0.3 - Small dip to lower being an easy sprint target
global_def.json
  • Float_PreferLowerMovementFactorWeight -1.0 from -0.5 - Greater Pip building for 1.3 Evasion
  • Float_CoolDownRange 200.0 from 100m - Get further away before trying to cool down
  • Float_PreferInsideMeleeRangeFactorWeight -1.3 from -1.0 - AI needs to fear a player operated HTC
  • Float_SprintPreferInsideMeleeRangeFactorWeight -1.75 from -1.0 - AI needs to fear a player operated HTC
  • Float_PreferLocationsThatGrantGuardFactorWeight 1.8 from 1.5 - Greater tree hugging for 1.3 damage reduction
  • Float_SprintPreferLocationsThatGrantGuardFactorWeight 1.5 from 1.25 - Greater tree hugging for 1.3 damage reduction
  • Float_BulwarkThresholdPercentage 0.0 from 85 - Nullified old Bulwark logic
  • Float_PreferLethalDamageToRearArcFromHostileFactorWeight -2.5 from -2.0 - Increased fear of units behind AI
  • Float_SprintPreferLethalDamageToRearArcFromHostileFactorWeight -2.5 from -2.0 - Increased fear of units behind AI
  • Float_PreferLOSToFewestHostileFactorWeight 0.6 from 0.5 - Increase LoS break while defensive
  • Float_SprintPreferLOSToFewestHostileFactorWeight 0.8 from 0.6 - Increase LoS break while defensive
global_sensorlock.json
  • Float_PriorityMovePercentage 0.0 from global = 100.0 - ADDED - Trying to let Lock pilots move where it is safe, not rush at the target
  • Float_PreferInsideMeleeRangeFactorWeight -1.3 from -1.0- AI needs to fear a player operated HTC
  • Float_SprintPreferInsideMeleeRangeFactorWeight -1.75 from -1.0 - AI needs to fear a player operated HTC
  • Float_SprintPreferLocationsThatGrantGuardFactorWeight 1.5 from 1.0 - Greater tree hugging for 1.3 damage reduction
  • Float_PreferHigherDamageReductionLocationsFactorWeight 1.0 from global = 0.5 - ADDED - Greater tree hugging for 1.3 damage reduction
  • Float_SprintPreferHigherDamageReductionLocationsFactorWeight 1.0 from global = 0.5 - ADDED - Greater tree hugging for 1.3 damage reduction
role_lastmanstanding.json
  • Float_OwnMaxLegDamageForDFAAttack 0.99 from 0.9 - Slightly larger DFA window
  • Float_DFADamageMultiplier 2.75 from 2.0 - Slightly higher chance of DFA
  • Float_PreferNotSurroundedByHostileUnitsFactorWeight 0.4 from 0.5 - Slightly less afraid of being surrounded and fleeing
  • Float_SprintPreferNotSurroundedByHostileUnitsFactorWeight 0.4 from 0.5 - Slightly less afraid of being surrounded and fleeing
  • Float_PreferLOSToMostHostilesFactorWeight 0.2 from 0.0 - Slightly less afraid of being surrounded and fleeing
  • Float_SprintPreferLOSToMostHostilesFactorWeight 0.1 from 0.0 - Slightly less afraid of being surrounded and fleeing
role_meleeonly.json
  • Float_SprintExclusionRadius 96.0 from global = 200 - ADDED - Lets AI sprint to melee
  • Float_PreferInsideSprintExclusionRadiusHostileFactorWeight 1.0 from global = 0.0 - ADDED - Lets AI sprint to melee
role_scout.json
  • Float_PreferHigherExpectedDamageToHostileFactorWeight 3.0 from 2.0 - Less afraid behavior
  • Float_PreferOptimalDistanceToAllyFactorWeight 0.2 from 0.1 - Stay slightly closer to Lancemates
  • Float_MeleeBonusMultiplierWhenAttackingEvasiveTargets 0.5 from 0.0 - Slightly more likely to punch opposing scout units
  • Float_BulwarkThresholdPercentage 0.0 from 30 - Nullified old Bulwark logic
  • Float_OverkillThresholdHighForLethalPositionFactor 95.0 from 90.0 - Less afraid behavior
  • Float_OverkillFactorForReserve 60.0 from 50.0 - Greater chance to reserve
  • Float_PreferSurroundingHostileUnitsFactorWeight 1.25 from 1.5 - Stay slightly closer to Lancemates
  • Float_SprintPreferSurroundingHostileUnitsFactorWeight 1.5 from 1.75 - Stay slightly closer to Lancemates
  • Float_PreferNotSurroundedByHostileUnitsFactorWeight 0.3 from 0.5 - Less afraid behavior
  • Float_SprintHysteresisRecoveryTurns 2.0 from 1.0 - Less afraid behavior and chained sprinting away from combat, returned to Stock value
  • Float_PreferStayInsideFenceNegativeLogicFactorWeight -5.0 from -3.0 - Stay slightly closer to Lancemates
  • Float_SprintPreferStayInsideFenceNegativeLogicFactorWeight -1.0 from -0.5 - Stay slightly closer to Lancemates, returned to Stock value
  • Float_FenceRadius 120.0 from 168.0 - Tighter Fence to enforce staying close to Lancemates
  • Float_MinimumSensorLockQuality 25.0 from 30.0 - More frequent Sensor Locks
  • Float_BuddyAloneFiringSolutionPreferenceWeight -0.8 from -0.4 - Stay slightly closer to Lancemates, returned to Stock value
  • Float_BuddyAloneMoveNearbyPreferenceWeight -1.2 from -0.6 - Stay slightly closer to Lancemates, returned to Stock value
  • Float_SprintBuddyAloneMoveNearbyPreferenceWeight -0.8 from -0.4 - Stay slightly closer to Lancemates, returned to Stock value
  • Float_SprintPreferHigherDistanceFromClosestHostileFactorWeight 0.3 from 0.5 - Less afraid behavior
  • Float_PreferLOSToFewestHostileFactorWeight 0.2 from 0.4 - Less afraid behavior
  • Float_SprintPreferLOSToFewestHostileFactorWeight 0.4 from 0..5 - Less afraid behavior
role_sniper.json
  • Float_PreferLowerMovementFactorWeight 0.8 from 0.0 - Greater Pip building for 1.3 Evasion
  • Float_DFADamageMultiplier 1.75 from global = 1.4 - Greater chance of sniper "freaking out" and DFA when rushed, still pretty rare
  • Float_PreferInsideMeleeRangeFactorWeight -1.5 from -1.0 - AI needs to fear a player operated HTC
  • Float_BulwarkThresholdPercentage 0.0 from 80 - Nullified old Bulwark logic
  • Float_PreferStayInsideFenceNegativeLogicFactorWeight -4.0 from -3.0 - Stay slightly closer to Lancemates
  • Float_FenceRadius 168.0 from 192.0 - Tighter Fence to enforce staying close to Lancemates
  • Float_PreferHigherRangedDefenseBonusLocationsFactorWeight 0.0 from global = 1.0 - ADDED - Stay out of shot killing Crystal Fields and other tiles
  • Float_BuddyAloneFiringSolutionPreferenceWeight -1.0 from 0.0 - Increase odds of return fire from beyond LoS to support Lancemates
  • Float_BuddyAloneMoveNearbyPreferenceWeight -0.6 from -0.8 - Lower odds to enter LoS in support of Lancemates
  • Float_PreferAttackFromBehindHostileFactorWeight 0.2 from 0.1 - Slightly higher odds for rear attack
  • Float_PreferLowerRangedToHitPenaltyLocationsFactorWeight 1.0 from global = 0.0 - ADDED - Try to avoid shot ruining tiles like Crystal Fields
role_vehicle.json
  • Float_PreferLowerMovementFactorWeight 0.9 from 0.7 - Greater Pip building for 1.3 Evasion
  • Float_PreferHigherExpectedDamageToHostileFactorWeight 3.5 from 2.5 - Less afraid behavior
  • Float_OptimalAllyDistance 96.0 from global = 168.0 - ADDED - Vehicles stick to Lancemates tighter
  • Float_PreferOptimalDistanceToAllyFactorWeight 0.3 from 0.2 - Vehicles stick to Lancemates tighter
  • Float_PreferLethalDamageToRearArcFromHostileFactorWeight -2.0 from -0.5 - Increased fear of units behind AI
  • Float_SprintPreferLethalDamageToRearArcFromHostileFactorWeight -2.0 from -0.5 - Increased fear of units behind AI
  • Float_SprintPreferHigherDistanceFromClosestHostileFactorWeight 0.4 from 0.3 - Stay out of melee Range
  • Float_PreferLOSToFewestHostileFactorWeight 0.1 from global = 0.0 - ADDED - Small bump to stay out of LoS
  • Float_SprintPreferLOSToFewestHostileFactorWeight 0.3 from global = 0.0 - ADDED - Small bump to stay out of LoS
role_vehicledef.json
  • Float_PreferLowerMovementFactorWeight -1.0 from -0.8 - Greater Pip building for 1.3 Evasion
 
Here's the Perm. Evasion Add-On update too:

Better AI - Permanent Evasion Add On 1.4.0 [mod edit, no unapproved links please]

EDIT: The google sheet is also updated and with a new sheet for modded AI Lance Tags. Where cFixes crates the change is noted.
 
Last edited by a moderator:
Instructions:
For older versions - Delete old Better AI folder in BATTLETECH\Mods
Copy BetterAI-1.4.0 in to the BATTLETECH\Mods folder.
Or for those of us that are sufficiently geeky, just run "git pull". :)

Thanks for the update! I tried just adding reserve to the AI, but it was pathetic... had to go all-in.
 
  • "AICritChanceBaseMultiplier": 1.0 from Stock = 0.2 - AI has same Crit Chance as Player
Y'know... setting CanAIBeInspired to true would be more drastic, but would also be appropriate for the same reasons as the crit chance. Assuming it actually works as expected... I think I'm going to go ahead and turn it on for my games and see what happens.

Based on the settings in the FuryConstants section (where it is already on and which is presumably Skirmish-only), I'll also try setting InspirationAccelerationMultiplier to 1.0 (it is 0.5 in the FuryConstants section, but that's most likely still a nerf).
 
Y'know... setting CanAIBeInspired to true would be more drastic, but would also be appropriate for the same reasons as the crit chance. Assuming it actually works as expected... I think I'm going to go ahead and turn it on for my games and see what happens.

Based on the settings in the FuryConstants section (where it is already on and which is presumably Skirmish-only), I'll also try setting InspirationAccelerationMultiplier to 1.0 (it is 0.5 in the FuryConstants section, but that's most likely still a nerf).
I've been debating that too. Setting that level to let the AI use it right was a pain in the beta and I've just back-burnered it. Let me know how the balance feels, I think it would need tuning from PvP "equal rates" due to the fewer targets the AI has to deal with and the quicker losses it suffers.
 
I've been debating that too. Setting that level to let the AI use it right was a pain in the beta and I've just back-burnered it. Let me know how the balance feels, I think it would need tuning from PvP "equal rates" due to the fewer targets the AI has to deal with and the quicker losses it suffers.
Hmm... that's a good point. I'm thinking it may be mitigated or even eliminated as a concern by the specific events that trigger morale gain... I'm only rarely going to have a mech destroyed, after all. And really, Morale in the campaign is gained when bad things happen to the enemy and tends to help the side that's already winning. If that isn't me, maybe it's good to have another reason to back off and fight another day. While in skirmish mode the number of mechs is even and Fury is gained when bad things happen to friendly units and is intended to help the side that's losing.

Another unrelated thing that has occurred to me... I've started using a few of the DLL mods that are out there and one of my high priority mods is True RNG Hit Rolls to turn off roll correction (aka roll corruption) and streak-breaking (aka statistics n00b nerf).

The thing is, the AI is using specific odds cutoffs in places, right?

If it does, it almost certainly uses the stated percentage rather than the real percentage... so how bad is the tuning going to be off with those two mods being used together?
 
Hmm... that's a good point. I'm thinking it may be mitigated or even eliminated as a concern by the specific events that trigger morale gain... I'm only rarely going to have a mech destroyed, after all. And really, Morale in the campaign is gained when bad things happen to the enemy and tends to help the side that's already winning. If that isn't me, maybe it's good to have another reason to back off and fight another day. While in skirmish mode the number of mechs is even and Fury is gained when bad things happen to friendly units and is intended to help the side that's losing.

Another unrelated thing that has occurred to me... I've started using a few of the DLL mods that are out there and one of my high priority mods is True RNG Hit Rolls to turn off roll correction (aka roll corruption) and streak-breaking (aka statistics n00b nerf).

The thing is, the AI is using specific odds cutoffs in places, right?

If it does, it almost certainly uses the stated percentage rather than the real percentage... so how bad is the tuning going to be off with those two mods being used together?
I got no idea on that one. You'd have to see if AIM or whatever is cutting in to the base code at a fundamental level to affect both AI and player. But as for json values, shouldn't be too many things, % hit for overheat and conservative shots come to mind.
 
I got no idea on that one. You'd have to see if AIM or whatever is cutting in to the base code at a fundamental level to affect both AI and player. But as for json values, shouldn't be too many things, % hit for overheat and conservative shots come to mind.
Yeah, OK.

The impression I've gotten (without looking at any of the code myself) is that the base game applies the odds modifications at the "dice roll" level, so it would happen for both the player and AI. OTOH, any streak-breaking is likely to be player-centric and there's a good chance the AI doesn't get increased odds to hit just because it missed a few likely shots. Reversing the math shouldn't be too hard, so if I can find out the exact formula and where the AI uses odds thresholds, it should be straightforward to adjust said thresholds.

:sigh:

Though all of that means that perfecting this into the game I want it to be just became noticeably more work.
 
Hello!
Just saying:
1.4.0 leads to extremely funky difficulty-nullifying behaviour in my case...the AI is so obsessed with not showing its weak torso, sprinting into cover and building evasion that it forgets attacking: over half(!) of all AI actions are pure movement. I feel like I'm doing skeet shooting, not fighting soldiers.
In 1.3.3. it was just the occasional swift tank that showed 'odd' behaviour.

I should note that I do play with overall lower hit rates (short-med-long range tiers being a thing), resulting in the average shot being 10~15% harder than in vanilla. I did adjust the hit rate thresholds required for the AI to consider all out attacks and conservative shots to compensate, and *if* it attacks it also does generally fire as expected. Still, it could be messing up the AI logic - I'm just surprised that it didn't have this weird effect in 1.3.3 or before.

If anyone else uses similar balance changes concerning to-hit ratios together with this, can anyone confirm similar behaviour?