XCOM 2
ADVENT Not Created Equal WOTC
Longmile149 13 Jul, 2021 @ 9:59pm
Suggested Enemy Groups
With the addition of overrides for tuning the NCE values for custom groups of enemies, I thought it might be helpful to post up groups for others to copy or adapt.

I currently have groups configured for:

Turrets
Drones
Medium robots (MECs, Sparks, etc.)
Big robots (sectopods, etc.)
Busted robots (andromedon shells)
Psionically-created enemies (psi-zombies, spectral enemies)
Lost
Chryssalids

I'm not running a ton of enemy mods, so I'm sure these categories will need to be expanded on or added to for some folks.

I considered creating groups for cybernetic enemies (andromedon, gatekeeper, archon, etc.) but ultimately decided I've already gone a little overboard on granular tuning with this and didn't do it. Other groups that might be worth doing would be psionic units and officers/generals.

The stat adjustments:
+GroupOverrides=(GroupName="AdvTurrets", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=10), \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=20) \\ (Stat=eStat_ArmorMitigation, bPercentage=true, iPositive=0, iNegative=20) \\ (Stat=eStat_HackDefense, bPercentage=true, iPositive=20, iNegative=10) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=10, iNegative=20) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=10, iNegative=20) \\ )) +GroupOverrides=(GroupName="AdvDrones", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=10), \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=20) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=10) \\ (Stat=eStat_ArmorMitigation, bPercentage=true, iPositive=0, iNegative=20) \\ (Stat=eStat_ShieldHP, bPercentage=false, iPositive=2, iNegative=0) \\ (Stat=eStat_HackDefense, bPercentage=true, iPositive=15, iNegative=30) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=25, iNegative=25) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=15, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=10, iNegative=20) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=10, iNegative=20) \\ )) +GroupOverrides=(GroupName="MediumBots", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=10), \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=20) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=10) \\ (Stat=eStat_ArmorMitigation, bPercentage=true, iPositive=30, iNegative=30) \\ (Stat=eStat_ShieldHP, bPercentage=false, iPositive=2, iNegative=0) \\ (Stat=eStat_HackDefense, bPercentage=true, iPositive=15, iNegative=30) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=15, iNegative=15) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=15, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=10, iNegative=10) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=10, iNegative=10) \\ )) +GroupOverrides=(GroupName="LargeBots", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=10), \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=20) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=10) \\ (Stat=eStat_ArmorMitigation, bPercentage=true, iPositive=30, iNegative=15) \\ (Stat=eStat_ShieldHP, bPercentage=false, iPositive=4, iNegative=0) \\ (Stat=eStat_HackDefense, bPercentage=true, iPositive=15, iNegative=15) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=10, iNegative=10) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=5, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=10, iNegative=10) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=10, iNegative=10) \\ )) +GroupOverrides=(GroupName="BustedBots", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=10), \\ (Stat=eStat_HP, bPercentage=true, iPositive=10, iNegative=30) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=5, iNegative=10) \\ (Stat=eStat_ArmorMitigation, bPercentage=true, iPositive=50, iNegative=75) \\ (Stat=eStat_HackDefense, bPercentage=true, iPositive=10, iNegative=40) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=5, iNegative=25) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=5, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=5, iNegative=25) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=5, iNegative=25) \\ )) +GroupOverrides=(GroupName="PsiCreated", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=10), \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=20) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=10) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=10, iNegative=10) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=15, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=10, iNegative=10) \\ )) +GroupOverrides=(GroupName="LostZombies", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=10, iNegative=20), \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=50) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=20) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=10, iNegative=30) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=5, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=25, iNegative=25) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=25, iNegative=25) \\ )) +GroupOverrides=(GroupName="Bugs", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=20, iNegative=20), \\ (Stat=eStat_CritChance, bPercentage=false, iPositive=15, iNegative=5) \\ (Stat=eStat_HP, bPercentage=true, iPositive=20, iNegative=20) \\ (Stat=eStat_ArmorMitigation, bPercentage=false, iPositive=1, iNegative=0) \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=20) \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=15, iNegative=15) \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=15, iNegative=15) \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=25, iNegative=25) \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=25, iNegative=25) \\ ))

The group definitions:
+UnitGroups=(GroupName="AdvTurrets", \\ Units[0]="AdvTurretM1", \\ Units[1]="AdvTurretM2", \\ Units[2]="AdvTurretM3", \\ Units[3]="AdvShortTurretM1", \\ Units[4]="AdvShortTurretM2", \\ Units[5]="AdvShortTurretM3", \\ Units[6]="AdvShortTurret" \\ ) +UnitGroups=(GroupName="AdvDrones", \\ Units[0]="AdvDroneM1", \\ Units[1]="AdvDroneM2", \\ Units[2]="AdvDroneM3" \\ ) +UnitGroups=(GroupName="MediumBots", \\ Units[0]="AdvMEC_M1", \\ Units[1]="AdvMEC_M2", \\ Units[2]="AdvSupportMEC_M1", \\ Units[3]="AdvSupportMEC_M2", \\ Units[4]="SpectreM1", \\ Units[5]="SpectreM2", \\ Units[6]="SpectreM4", \\ Units[7]="AdventSparkM1" \\ Units[8]="AdventSparkM2" \\ Units[9]="AdventSparkM3" \\ ) +UnitGroups=(GroupName="LargeBots", \\ Units[0]="Sectopod", \\ Units[1]="PrototypeSectopod", \\ Units[2]="StealthSectopod", \\ ) +UnitGroups=(GroupName="BustedBots", \\ Units[0]="AndromedonRobot", \\ Units[1]="AndromedonRobotM4", \\ ) +UnitGroups=(GroupName="PsiCreated", \\ Units[0]="PsiZombie", \\ Units[1]="PsiZombieHuman", \\ Units[2]="SpectralStunLancerM1", \\ Units[3]="SpectralStunLancerM2", \\ Units[4]="SpectralStunLancerM3", \\ Units[5]="SpectralStunLancerM4", \\ Units[6]="SpectralZombieM1", \\ Units[7]="SpectralZombieM2" \\ Units[8]="SpectralZombieM3" \\ Units[9]="SpectralZombieM4" \\ ) +UnitGroups=(GroupName="LostZombies", \\ Units[0]="LostZombie", \\ Units[1]="LostZombieHuman", \\ Units[2]="TheLost", \\ Units[3]="TheLostDasher", \\ Units[4]="TheLostHowler", \\ Units[5]="TheLostBrute", \\ Units[6]="TheLostHP2", \\ Units[7]="TheLostHP3", \\ Units[8]="TheLostHP4", \\ Units[9]="TheLostHP5", \\ Units[10]="TheLostHP6", \\ Units[11]="TheLostHP7", \\ Units[12]="TheLostHP8", \\ Units[13]="TheLostHP9", \\ Units[14]="TheLostHP10", \\ Units[15]="TheLostHP11", \\ Units[16]="TheLostHP12", \\ Units[17]="TheLostDasherHP2", \\ Units[18]="TheLostDasherHP3", \\ Units[19]="TheLostDasherHP4", \\ Units[20]="TheLostDasherHP5", \\ Units[21]="TheLostDasherHP6", \\ Units[22]="TheLostDasherHP7", \\ Units[23]="TheLostDasherHP8", \\ Units[24]="TheLostDasherHP9", \\ Units[25]="TheLostDasherHP10", \\ Units[26]="TheLostDasherHP11", \\ Units[27]="TheLostDasherHP12", \\ Units[28]="TheLostDasherHP13", \\ Units[29]="TheLostDasherHP14", \\ Units[30]="TheLostDasherHP15", \\ Units[31]="TheLostDasherHP16", \\ Units[32]="TheLostDasherHP17", \\ Units[33]="TheLostDasherHP18", \\ Units[34]="TheLostDasherHP19", \\ Units[35]="TheLostDasherHP20", \\ Units[36]="TheLostDasherHP21", \\ Units[37]="TheLostDasherHP22", \\ Units[38]="TheLostHowlerHP4", \\ Units[39]="TheLostHowlerHP5", \\ Units[40]="TheLostHowlerHP6", \\ Units[41]="TheLostHowlerHP7", \\ Units[42]="TheLostHowlerHP8", \\ Units[43]="TheLostHowlerHP9", \\ Units[44]="TheLostHowlerHP10", \\ Units[45]="TheLostHowlerHP11", \\ Units[46]="TheLostHowlerHP12", \\ Units[47]="TheLostHowlerHP13", \\ Units[48]="TheLostHowlerHP14", \\ Units[49]="TheLostHowlerHP15", \\ Units[50]="TheLostHowlerHP16", \\ Units[51]="TheLostHowlerHP17", \\ Units[52]="TheLostHowlerHP18", \\ Units[53]="TheLostHowlerHP19", \\ Units[54]="TheLostHowlerHP20", \\ Units[55]="TheLostHowlerHP21", \\ Units[56]="TheLostHowlerHP22", \\ Units[57]="TheLostBruteHP10", \\ Units[58]="TheLostBruteHP11", \\ Units[59]="TheLostBruteHP12", \\ Units[60]="TheLostBruteHP14", \\ Units[61]="TheLostBruteHP15", \\ Units[62]="TheLostBruteHP16", \\ Units[63]="TheLostBruteHP19", \\ Units[64]="TheLostBruteHP22", \\ Units[65]="TheLostBruteHP24", \\ Units[66]="TheLostBruteHP26", \\ ) +UnitGroups=(GroupName="Bugs", \\ Units[0]="Chryssalid", \\ Units[1]="ABAChryssalidM1", \\ Units[2]="ABAChryssalidM2", \\ Units[3]="ABAChryssalidM4", \\ Units[4]="ChryssalidDaddy", \\ Units[5]="ChryssalidMommy", \\ Units[6]="CXJuvQueenM1", \\ Units[7]="CXJuvQueenM2" \\ Units[8]="CXJuvQueenM3" \\ Units[9]="CXBroodMother" \\ Units[10]="CXDrone", \\ Units[11]="CXRipperM1", \\ Units[12]="CXRipperM2", \\ Units[13]="CXRipper", \\ Units[14]="CXRipper2", \\ Units[15]="CXRipperXCom", \\ Units[16]="CXWarrior", \\ Units[17]="CXShrieker" \\ Units[18]="CXHiveGuard" \\ Units[19]="CXChameleon" \\ Units[20]="CXChameleon2", \\ Units[21]="CXChameleon3", \\ Units[22]="CXInfector", \\ Units[23]="ChrysZombie", \\ Units[24]="ChrysZombieHuman", \\ Units[25]="ChrysHybrid", \\ Units[26]="CXSwarmerM1", \\ Units[27]="CXSwarmerM2" \\ Units[28]="CXSwarmerM3" \\ )
< >
Showing 1-2 of 2 comments
Stukov81-T.TV 17 Aug, 2021 @ 11:31am 
Another idea is to make groups for some force levels.

I needed to make a group for "early opponents - FL 1 and 2 especially. Else the randomization bit me hard.

+RandomizeStats=(Stat=eStat_Offense, bPercentage=true, iPositive=66, iNegative=50) +RandomizeStats=(Stat=eStat_HP, bPercentage=true, iPositive=100, iNegative=50) +RandomizeStats=(Stat=eStat_Mobility, bPercentage=true, iPositive=25, iNegative=25) +RandomizeStats=(Stat=eStat_Defense, bPercentage=false, iPositive=30, iNegative=30) +RandomizeStats=(Stat=eStat_Dodge, bPercentage=false, iPositive=30, iNegative=30) +RandomizeStats=(Stat=eStat_FlankingAimBonus, bPercentage=false, iPositive=10, iNegative=10) +RandomizeStats=(Stat=eStat_CritChance, bPercentage=false, iPositive=30, iNegative=30) +RandomizeStats=(Stat=eStat_FlankingCritChance, bPercentage=false, iPositive=30, iNegative=30) +RandomizeStats=(Stat=eStat_PsiOffense, bPercentage=false, iPositive=20, iNegative=20) +RandomizeStats=(Stat=eStat_Will, bPercentage=true, iPositive=100, iNegative=50) +RandomizeStats=(Stat=eStat_HackDefense, bPercentage=true, iPositive=100, iNegative=50) +RandomizeStats=(Stat=eStat_ArmorPiercing, bPercentage=false, iPositive=5, iNegative=0) +RandomizeStats=(Stat=eStat_ArmorMitigation, bPercentage=false, iPositive=2, iNegative=2)

I also made a group where ArmorMitigation of -2 - +2 is changed to ShieldHP 0 - 10. Mostly for enemies i feel doesn't feel like they should have armor, but instead should be Shielded, Priest is a prime example for me.

Another group i have where the Armor Mitigation is change to -25% - +300% Armor. For the allready heavily armored opponents.

It is great what you can do with groups if you have the time, i am just at the very beginning of adding opponents to certain groups

Stukov81-T.TV 27 Aug, 2021 @ 2:31pm 
Also some interesting possibilities, making sparate groups for Frost Legion and Savages. Savages i added all Faceless and Berserkers so far, not sure if anything else fits in there

;Savages +GroupOverrides=(GroupName="Savage", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=25, iNegative=25), \\ (Stat=eStat_HP, bPercentage=true, iPositive=100, iNegative=33), \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=35, iNegative=15), \\ (Stat=eStat_Defense, bPercentage=false, iPositive=20, iNegative=20), \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=40, iNegative=30), \\ (Stat=eStat_ShieldHP, bPercentage=false, iPositive=20, iNegative=0), \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=20, iNegative=20), \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=20, iNegative=20), \\ (Stat=eStat_HearingRadius, bPercentage=true, iPositive=20, iNegative=20) \\ )) ;Frost Legion +GroupOverrides=(GroupName="ShieldM1", Stats=( \\ (Stat=eStat_Offense, bPercentage=true, iPositive=44, iNegative=44), \\ (Stat=eStat_HP, bPercentage=true, iPositive=10, iNegative=75), \\ (Stat=eStat_ShieldHP, bPercentage=true, iPositive=300, iNegative=0), \\ (Stat=eStat_Mobility, bPercentage=true, iPositive=25, iNegative=25), \\ (Stat=eStat_Defense, bPercentage=false, iPositive=10, iNegative=10), \\ (Stat=eStat_Dodge, bPercentage=false, iPositive=10, iNegative=10), \\ (Stat=eStat_FlankingAimBonus, bPercentage=false, iPositive=10, iNegative=10), \\ (Stat=eStat_CritChance, bPercentage=false, iPositive=30, iNegative=30), \\ (Stat=eStat_FlankingCritChance, bPercentage=false, iPositive=30, iNegative=30), \\ (Stat=eStat_PsiOffense, bPercentage=false, iPositive=20, iNegative=20), \\ (Stat=eStat_Will, bPercentage=true, iPositive=100, iNegative=50), \\ (Stat=eStat_HackDefense, bPercentage=true, iPositive=100, iNegative=50), \\ (Stat=eStat_ArmorPiercing, bPercentage=false, iPositive=1, iNegative=1), \\ (Stat=eStat_SightRadius, bPercentage=true, iPositive=10, iNegative=20), \\ (Stat=eStat_DetectionRadius, bPercentage=true, iPositive=10, iNegative=20), \\ (Stat=eStat_HearingRadius, bPercentage=true, iPositive=10, iNegative=20) \\ ))
< >
Showing 1-2 of 2 comments
Per page: 1530 50