I promised I’d document my XCOM 2 tweaks. My goal, as stated elsewhere, was to create a “casual mode” for taking on Legendary levels of enemies in XCOM 2. It’s not the same as playing on “Rookie” difficulty, because in Rookie mode the enemies go easy on you (there’s a limit to how many will fire on you in a given round,) and the random number generator will start erring in your favor if you really take a beating.
I wanted lots of tough, smart enemies, and I did not want them to back off if I screwed up. But I still wanted to be able to enjoy myself.
This is going to be much longer than most of my posts. Here we go!
This whole project¹ takes place in the Config folder for XCOM 2. On my machine it’s at C:\Program Files (x86)\Steam\steamapps\common\XCOM 2\XComGame\Config
This folder has around 40 files in it (as of now, anyway. More may be coming.) The key files for me were these:
- DefaultClassData.ini—I tweaked HP, Hack, and Offense gains for each character class
- DefaultGameData.ini—boosted the squad size
- DefaultGameData_CharacterStats.ini—lots of small boosts for characters here
- DefaultGameData_SoldierSkills.ini—reduced cooldown a little for the really neat stuff.
- DefaultGameData_WeaponData.ini—lots of tweaks here. Lots.
- DefaultGameData_XpData.ini—Reduced XP required to level up.
The very first thing I did was to duplicate the entire Config folder, and call the duplicate folder called “Config.bak.” That way if I broke anything, I could just swap the folders out and put the whole game back the way it was.
Ch-ch-ch-changes
Here are the changes I made. I’ve organized them by file, and while I have not listed every last modification I made, I’ve provided specific examples of each change so that even the most timid among us can confidently mod their game.
DefaultClassData.ini
I made lots of little changes here in order to make promotions give just a little bit more to the soldiers. The file has sections for each of the character classes (Ranger, Sharpshooter, Specialist, Grenadier,) and is further divided by each promotion they get. Here is the section that defines the various things a Ranger gets when becoming a squaddie:
; squaddie
SoldierRanks=( aAbilityTree=( (AbilityName="SwordSlice", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
), \\
aStatProgression=((StatType=eStat_Offense,StatAmount=3), (StatType=eStat_HP,StatAmount=1), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=1)),\\
The bolded line is where I made my change: I changed StatAmount=3 to StatAmount=4. The promoted Ranger gets a little bit more aim.
I boosted the Offense promotions for my Rangers and Sharpshooters, and gave my Specialists better Hacking bonuses.
This is where a Specialist is promoted to Corporal.
; corporal
SoldierRanks=( aAbilityTree=( (AbilityName="MedicalProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
(AbilityName="CombatProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
), \\
aStatProgression=((StatType=eStat_Offense,StatAmount=3), (StatType=eStat_HP,StatAmount=1), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=5), (StatType=eStat_CombatSims,StatAmount=0)),\\
I changed the bolded text so StatAmount=5 was StatAmount=10. I did this for each promotion, because the vanilla specialist, even fully tricked out, was never better than a bad crapshoot for the cool stuff. It was almost *always* a better idea to have the Specialist shoot than hack. With this tweak I turned my Specialists into hackers. Good times!
DefaultGameData.ini
This one eventually required an outside mod¹ because of interface problems. The MaxSoldiersOnMission line starts like this.
m_iMaxSoldiersOnMission=4
I made it look like this:
m_iMaxSoldiersOnMission=6
This meant I began the game with 6 soldiers instead of four. Once I bought squad size upgrades I was taking eight soldiers on each mission.
The additional two soldiers, #7 and #8, were auto-filled for me from the top of my soldier list, because the interface didn’t actually let me edit those two slots. I later installed the “Max Squad Size Fix” mod¹, which changed the UI, allowing me to choose everybody who came along (and their loadout.)
This change, more than any of the others, made the biggest difference for me. I was still always outnumbered, but after I bought the squad size upgrades I could treat my crew as two fire teams of four, and that was wonderful.
DefaultGameData_CharacterStats.ini
This was my second most important adjustment. I boosted the starting character stats so that rookies weren’t worthless, and so that flanking somebody made a real difference. The bold lines are the ones I wanted to change:
[Soldier X2CharacterTemplate]
CharacterBaseStats[eStat_HP]=5
CharacterBaseStats[eStat_Offense]=65
CharacterBaseStats[eStat_Defense]=0
CharacterBaseStats[eStat_Mobility]=12
CharacterBaseStats[eStat_SightRadius]=27
CharacterBaseStats[eStat_Will]=40
CharacterBaseStats[eStat_PsiOffense]=0
CharacterBaseStats[eStat_FlightFuel]=0
CharacterBaseStats[eStat_UtilityItems]=1
CharacterBaseStats[eStat_AlertLevel]=2
CharacterBaseStats[eStat_BackpackSize]=3
CharacterBaseStats[eStat_Hacking]=5
CharacterBaseStats[eStat_CritChance]=0
CharacterBaseStats[eStat_CombatSims]=0
CharacterBaseStats[eStat_HighCoverConcealment]=1
CharacterBaseStats[eStat_Strength]=0
CharacterBaseStats[eStat_FlankingCritChance]=50
CharacterBaseStats[eStat_FlankingAimBonus]=0
CharacterBaseStats[eStat_DetectionRadius]=9
Offense went to 75, Mobility went up by one to 13, Sight radius went to 29, and Flanking Aim Bonus went to 20.
Aim a little better, run a little faster, see a little further, and now it’s worth getting out there and flanking somebody.
I did not boost their HP. If I screwed up, I wanted to pay for it. Obviously I could have pushed all their abilities through the roof, but that would have sucked quite a bit of the fun out of the game for me.
DefaultGameData_SoldierSkills.ini
Cooldown was all I messed with here. Many missions didn’t run long enough for a soldier to get to use their high-level abilities more than once. Here’s the Sharpshooter section:
[XComGame.X2Ability_SharpshooterAbilitySet]
HITWHEREITHURTS_CRIT=10
STEADYHANDS_AIM_BONUS=10
STEADYHANDS_CRIT_BONUS=10
DEADEYE_COOLDOWN=3
DEADEYE_AIM_MULTIPLIER=0.25f
FACEOFF_COOLDOWN=4
FANFIRE_COOLDOWN=4
KILLZONE_COOLDOWN=4
SERIAL_COOLDOWN=5
SHARPSHOOTERAIM_BONUS=20
The bolded lines all got reduced to 3. My Sharpshooters got to be awesome more often, and I was more likely to use an ability early in a mission. I still had to wait to use it again, but I was less likely to get killed, or have a mission timer run out, while waiting.
If you dig through this file you’ll see that you can boost lots more than just cooldown times. Your grenadiers might not want an aim penalty for using Chain Shot, for instance. (Upon further consideration, I know your grenadiers don’t want that aim penalty. The question is whether you want it.)
DefaultGameData_WeaponData.ini
This is where I made the most changes. It’s also where I broke the game balance completely, and then backed off a bit and un-broke it.
Consider the section for the Assault Rifle:
AssaultRifle_Conventional_BaseDamage=(Damage=4, Spread=1, PlusOne=0, Crit=2, Pierce=0, Shred=0, Tag="", DamageType="Projectile_Conventional")
AssaultRifle_Magnetic_BaseDamage=(Damage=6, Spread=1, PlusOne=0, Crit=3, Pierce=0, Shred=0, Tag="", DamageType="Projectile_MagXCom")
AssaultRifle_Beam_BaseDamage=(Damage=8, Spread=1, PlusOne=0, Crit=4, Pierce=0, Shred=0, Tag="", DamageType="Projectile_BeamXCom")
I added 2 to each of the “Damage” values, and increased the Spread from 1 to 2. Now instead of doing 3-5 damage the conventional assault rifle did 4-8. Sectoids and Officers still required two hits, but never needed three (far fewer “oh geez why won’t you die” moments.)
In my first pass I added 3 to each value, and that was too much, because far too many things could be killed with a single shot.
There’s a section like this for each of the weapons. Here’s some help with the terms, should you need it:
- Damage: starting damage roll
- Spread: random number to add or subtract from the roll
- PlusOne: I don’t know, so I left it alone
- Crit: Amount of damage to add if it’s a crit
- Pierce: Amount of armor to ignore on a hit
- Shred: Amount of armor to destroy on a hit
The place where I went a little crazy with no regrets was in the section for the Ranger Sword. At the top of the tech tree (“Beam”) I had doubled the damage, doubled the crit, and given it three points of Pierce. Why? Because I wanted the occasional opportunity to play Jedi Knight with the Reaper ability. SUCH FUN. Risky, too, but there wasn’t a 95% chance my Ranger would accomplish nothing and then die.
I watched part of a Twitch run where the player expressed the desire to do exactly that, and wished aloud for just such a mod. It’s a simple text edit on three lines of human-readable code.
Deeper in the file there’s a section labeled like this:
; ***** Core properties and variables for XCom weapons *****
Here you can give weapons an aiming bonus, a larger magazine size (it says “iClipSize” but we know it’s a mag), and change how much environment damage it does. I added one round to everybody’s mags, gave the sniper rifles an aiming bonus, and added some hack bonus to the gremlins. These are all pretty easy to find.
Still further in the same file, look for this:
; ***** Grenade Damage Arrays *****
And then lines like these:
FragGrenade_BaseDamage = (Damage=3, Spread = 0, PlusOne = 20, Crit = 0, Pierce = 0, Shred=1, Tag = "", DamageType="Explosion")
I bumped up the damage by two points, and the spread by one. Grenades could actually kill things, instead of just removing some cover, but they weren’t truly dependable.
Of course, I wanted to have more of them. Look for this block, and note the line I’ve bolded:
FragGrenade_iSoundRange = 30
FragGrenade_iEnvironmentDamage = 10
FragGrenade_iSupplies = 100
FragGrenade_TradingPostValue = 23
FragGrenade_iPoints = 0
FragGrenade_iClipSize = 1
FragGrenade_Range = 10
FragGrenade_Radius = 3
Maybe grenades actually DO come in an open-topped clip. Who knows? Whatever they come in, I edited this line so that now they come in twos.
This edit can be done with every grenade type. It makes grenadiers able to actually launch a crap-ton of grenades and be useful, rather than launching two and then wondering why they’re called “grenadiers” instead of “wildly inaccurate bullet-hoses.”
DefaultGameData_XpData.ini
Here’s the last set. I made changes here because I wanted to level up multiple soldiers and experiment with their ability trees. That’s pretty tedious with the defaults. Since I was playing on Legend (where there are lots of smart enemies) I edited this block:
; Legend difficulty
PerDifficultyConfig[3]=( \\
RequiredKills[0]=0, \\
RequiredKills[1]=1, \\
RequiredKills[2]=8, \\
RequiredKills[3]=18, \\
RequiredKills[4]=40, \\
RequiredKills[5]=70, \\
RequiredKills[6]=110, \\
RequiredKills[7]=175)
All I did was reduce each number by a little less than half. 1, 5, 12, 25, 50, 75, and 100 were the numbers I used. Lots more leveling up, and lots more experimentation with builds.
And that’s it
Those are the files I changed, and while I haven’t listed all of my changes in detail, I think I’ve provided enough information here that folks who would otherwise be afraid to dig into the INI files will be able to modify XCOM 2 in ways that make it more like whatever it is they actually feel like playing.
I have exactly zero desire to roll the settings back to their defaults and attempt Legendary mode. I’ve played that game, and it feels too much like a very miserable job, with rare moments of joy, and a high probability of getting fired. I understand that there are people who really dig that, but I’m not one of those people.
And I’m glad I don’t have to be in order to enjoy this game.
¹The “Max Squad Size Fix” mod is found here, if you’re a Steam user, and it lives here on Nexus. It’s possible that it will not be required in later iterations of XCOM 2. I cannot vouch for its stability or support, but I’m still using it as of this writing, and it has a 5/5 star rating from the user community.