How do soldier abilities at Squaddie work?

Post Reply
lilyophelia
Posts: 22
Joined: Fri Jan 27, 2017 11:13 am

How do soldier abilities at Squaddie work?

Post by lilyophelia »

Is there a limit (like 2-3 abilities max) that a class can receive when they first train to squaddie?

I've never been able to find out the answer to this.

I have just been keeping the initial abilities on my classes low because they don't seem to work if I overload them too much.
User avatar
Arcalane
Posts: 339
Joined: Thu Jan 19, 2017 10:42 pm

Re: How do soldier abilities at Squaddie work?

Post by Arcalane »

I believe the hard cap is 3. SPARKs are kind of an exception because some of their abilities are granted by their BIT or their inherent archetype instead of being 'class' perks.
lilyophelia
Posts: 22
Joined: Fri Jan 27, 2017 11:13 am

Re: How do soldier abilities at Squaddie work?

Post by lilyophelia »

Thanks for the quick reply!
Krzysztof z Bagien
Posts: 42
Joined: Fri Jan 20, 2017 6:18 am

Re: How do soldier abilities at Squaddie work?

Post by Krzysztof z Bagien »

IIRC vanilla had no such limit, or it was significantly higher, so maybe it's tweakable.
Sentenryu
Posts: 24
Joined: Mon Jul 18, 2016 11:24 pm

Re: How do soldier abilities at Squaddie work?

Post by Sentenryu »

There's no limit. The only limit is that only 3 abilities will show up when you mouse over the squaddie rank on the promotion screen.


The spark is assigned 4:

Code: Select all

+SoldierRanks=(  aAbilityTree=(	(AbilityName="Overdrive", ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="Arsenal", ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="RobotImmunities", ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="IntrusionProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=1), (StatType=eStat_Hacking,StatAmount=5), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)

You can have as many as you need here, but if you've abilities that are strongly tied together (as in, one only makes sense if you also have the other), you might want to do it the Combatives way:

Code: Select all

	Template = PurePassive('Combatives', "img:///UILibrary_LW_Overhaul.LW_AbilityCombatives", false, 'eAbilitySource_Perk');
	Template.AdditionalAbilities.AddItem('CombativesAttack');
	Template.AdditionalAbilities.AddiTEm('CombativesPreparation');
	Template.AdditionalAbilities.AddItem('CombativesCounterattack');
	Template.AdditionalAbilities.AddItem('CombativesStats');
The perk is composed of 4 individual abilities, one is the stats (+10 dodge), the other is the preparation (sets up the counter attack when the player turn ends), then there's the counter attack trigger (no idea what this actualy does, I think it's the animation) and the actual attack . Since the ability doesn't work without those 4 parts, they are all granted by the 5th ability, the Combatives perk. Then you only need to assign that ability that grants the others to the soldier:

Code: Select all

+SoldierRanks=(  aAbilityTree=(	(AbilityName="CenterMass",				ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="Combatives",				ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="GrazingFire",				ApplyToWeaponSlot=eInvSlot_PrimaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_Will,StatAmount=4), (StatType=eStat_HP,StatAmount=1)) \\
			)
Sir_Dr_D
Posts: 84
Joined: Sat Feb 11, 2017 2:28 am

Re: How do soldier abilities at Squaddie work?

Post by Sir_Dr_D »

And where is that combatives code set? Is it possible to combine 2 perks like that into 1 using the config files?
Krzysztof z Bagien
Posts: 42
Joined: Fri Jan 20, 2017 6:18 am

Re: How do soldier abilities at Squaddie work?

Post by Krzysztof z Bagien »

Sentenryu wrote:There's no limit. The only limit is that only 3 abilities will show up when you mouse over the squaddie rank on the promotion screen.
There IS a limit of 3 for sure. I've added some more abilities and only first 3 were active in tactical.
Sentenryu
Posts: 24
Joined: Mon Jul 18, 2016 11:24 pm

Re: How do soldier abilities at Squaddie work?

Post by Sentenryu »

Sir_Dr_D wrote:And where is that combatives code set? Is it possible to combine 2 perks like that into 1 using the config files?
Sadly, no. You've to use code to create a new ability and then add the others as AditionalAbilities

Krzysztof z Bagien wrote:
Sentenryu wrote:There's no limit. The only limit is that only 3 abilities will show up when you mouse over the squaddie rank on the promotion screen.
There IS a limit of 3 for sure. I've added some more abilities and only first 3 were active in tactical.
Here's the full code for bradford's class on the Alien Hunters DLC:

Code: Select all

[CentralOfficer X2SoldierClassTemplate]
bMultiplayerOnly=0
ClassPoints=4
IconImage="img:///UILibrary_Common.class_ranger"
NumInForcedDeck=0
NumInDeck=0
KillAssistsPerKill=4
SquaddieLoadout="NestCentral_Loadout"
+AllowedWeapons=(SlotType=eInvSlot_PrimaryWeapon, WeaponType="rifle")
+AllowedWeapons=(SlotType=eInvSlot_SecondaryWeapon, WeaponType="sword")
+AllowedArmors="soldier"
bAllowAWCAbilities=0
bBlockRankingUp=1
+CannotEditSlots=eInvSlot_PrimaryWeapon
bHideInCharacterPool=1

; squaddie
SoldierRanks=(	aAbilityTree=(	(AbilityName="SwordSlice", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="Blademaster", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="Shadowstep", ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="RunAndGun"), \\
								(AbilityName="Bladestorm", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="Untouchable"), \\
								(AbilityName="Reaper", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							 ) \\
			)

And here's the code for Shen's class on Shen's Last Gift:

Code: Select all

[ChiefEngineer X2SoldierClassTemplate]
bMultiplayerOnly=0
ClassPoints=3
IconImage="img:///UILibrary_Common.class_specialist"
NumInForcedDeck=0
NumInDeck=0
KillAssistsPerKill=3
SquaddieLoadout="LostTowersShen_Loadout"
+AllowedWeapons=(SlotType=eInvSlot_PrimaryWeapon, WeaponType="rifle")
+AllowedWeapons=(SlotType=eInvSlot_SecondaryWeapon, WeaponType="gremlin")
+AllowedArmors="soldier"
bAllowAWCAbilities=0
bBlockRankingUp=1
+CannotEditSlots=eInvSlot_Armor
+CannotEditSlots=eInvSlot_SecondaryWeapon
bHideInCharacterPool=1

; squaddie
SoldierRanks=(	aAbilityTree=(	(AbilityName="IntrusionProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
                                (AbilityName="AidProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="CombatProtocol_Shen", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="HaywireProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="ScanningProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="ThreatAssessment", ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="MedicalProtocol_Shen", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="CapacitorDischarge_Shen", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							 ) \\
			)
As you can see, both have plenty of abilities at the first rank. You sure you configured the abilities right? it's easy to miss the comma or the double backslashes at the end, that makes the following line be ignored. If you still want further proof, here's the spark on LW2:

Code: Select all

[Spark X2SoldierClassTemplate]
bMultiplayerOnly=0
ClassPoints=4
IconImage="img:///UILibrary_DLC3Images.class_spark"
NumInForcedDeck=0
NumInDeck=0
KillAssistsPerKill=4
SquaddieLoadout="SquaddieSpark"
;+AllowedWeapons=(SlotType=eInvSlot_PrimaryWeapon, WeaponType="sparkrifle")
;+AllowedWeapons=(SlotType=eInvSlot_SecondaryWeapon, WeaponType="sparkbit")
+AllowedWeapons=(SlotType=eInvSlot_HeavyWeapon, WeaponType="heavy")
+AllowedArmors="spark"
bAllowAWCAbilities=0
bIgnoreInjuries=1
bUniqueTacticalToStrategyTransfer=1
bHideInCharacterPool=0
RequiredCharacterClass="SparkSoldier"
bHasClassMovie=true

!SoldierRanks=()

; squaddie
+SoldierRanks=(  aAbilityTree=(	(AbilityName="Overdrive", ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="Arsenal", ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="RobotImmunities", ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="IntrusionProtocol", ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=1), (StatType=eStat_Hacking,StatAmount=5), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; LPCL
+SoldierRanks=(  aAbilityTree=( (AbilityName="Shredder",				ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="IronSkin"					), \\
								(AbilityName="CombatAwareness"			) \\
							),	\\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; CPL
+SoldierRanks=(  aAbilityTree=( (AbilityName="Rainmaker",				ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="Bulwark"					), \\
								(AbilityName="AdaptiveAim",				ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; SGT
+SoldierRanks=(  aAbilityTree=(	(AbilityName="Strike",					ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="Formidable"				),	\\
								(AbilityName="CoolUnderPressure",		ApplyToWeaponSlot=eInvSlot_PrimaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; SSGT
+SoldierRanks=(  aAbilityTree=(	(AbilityName="Intimidate"				),	\\
								(AbilityName="Repair",					ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="Sentinel",				ApplyToWeaponSlot=eInvSlot_PrimaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=3), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=1), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; TSGT
+SoldierRanks=(  aAbilityTree=(	(AbilityName="AbsorptionField"			),	\\
								(AbilityName="WreckingBall"				),	\\
								(AbilityName="Holotargeting",			ApplyToWeaponSlot=eInvSlot_PrimaryWeapon) \\
							 ), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=3), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; GSGT
+SoldierRanks=( aAbilityTree=(	(AbilityName="Bombard",					ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="DamageControl"			), \\
								(AbilityName="HunterProtocol",			ApplyToWeaponSlot=eInvSlot_PrimaryWeapon) \\
							), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=3), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=0), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
; MSGT
+SoldierRanks=( aAbilityTree=(	(AbilityName="Sacrifice",				ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="AbsorptionFields"			), \\
								(AbilityName="Nova",					ApplyToWeaponSlot=eInvSlot_Unknown) \\
							), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=3), (StatType=eStat_HP,StatAmount=0), (StatType=eStat_Strength,StatAmount=1), (StatType=eStat_Hacking,StatAmount=0), (StatType=eStat_CombatSims,StatAmount=0)),\\
			)
Krzysztof z Bagien
Posts: 42
Joined: Fri Jan 20, 2017 6:18 am

Re: How do soldier abilities at Squaddie work?

Post by Krzysztof z Bagien »

Sentenryu wrote:You sure you configured the abilities right? it's easy to miss the comma or the double backslashes at the end, that makes the following line be ignored.
Here's the code to add some abilities that are easy to notice in tactical, my test subject was a Specialist and I didn't change anything else. I can't see anything wrong.

Code: Select all

; squaddie
+SoldierRanks=(	aAbilityTree=(	(AbilityName="Suppression_LW",		ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="Squadsight",			ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="LightEmUp",			ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="AidProtocol",			ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="HaywireProtocol",		ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="IntrusionProtocol",	ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_Will,StatAmount=5), (StatType=eStat_Hacking,StatAmount=40), (StatType=eStat_CombatSims,StatAmount=1))\\
			 )
; LCPL
That's how my Specialist's abilities look like:
Image

And in tactical:
Image
Notice that he has Light'em Up, Squadsight and Suppression, but there's no Aid Protocol.

Now, let's shuffle the abilities:

Code: Select all

; squaddie
+SoldierRanks=(	aAbilityTree=(	(AbilityName="LightEmUp",			ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="AidProtocol",			ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="Suppression_LW",		ApplyToWeaponSlot=eInvSlot_PrimaryWeapon), \\
								(AbilityName="Squadsight",			ApplyToWeaponSlot=eInvSlot_Unknown), \\
								(AbilityName="HaywireProtocol",		ApplyToWeaponSlot=eInvSlot_SecondaryWeapon), \\
								(AbilityName="IntrusionProtocol",	ApplyToWeaponSlot=eInvSlot_SecondaryWeapon) \\
							), \\
				aStatProgression=((StatType=eStat_Offense,StatAmount=2), (StatType=eStat_Will,StatAmount=5), (StatType=eStat_Hacking,StatAmount=40), (StatType=eStat_CombatSims,StatAmount=1))\\
			 )
; LCPL
Abilities in Armory:
Image

... and in tactical:
Image
Now he has Light'em Up, Aid Protocol and Suppression, but no Squadsight; and can't hack a drone or a lamppost.

So, no matter what I do, there are only 3 abilities for each soldier.
Post Reply