Not Created Equally: Something's off here...

Post Reply
Lyzak
Posts: 81
Joined: Thu May 18, 2017 5:01 pm

Not Created Equally: Something's off here...

Post by Lyzak »

Has the way Rookie soldier stats calculate been changed?

I've been using manual (well, spreadsheet) math to determine the psi stats of my soldiers prior to performing the Sectoid autopsy (because the game screwed me out of my first scientist for a month and a half). However, now that I've completed the autopsy I was surprised to find that the psi stats of my psi-operatives-eventually-to-be were not quite what I calculated them to be.

Here's what the wiki has to say about Not Created Equally:
"Not Created Equally works by swapping stats and will never produce really bad or good rookies. [...] For the purpose of those modifications some stats are worth more "points" than others. Dodge, Will, Hacking and Psi Offense are all worth 1 point; Defense is worth 1.5 points; Offense is worth 3 points; Health and Mobility are worth 12 points. The total of "points" a soldier has on all of his stats is 478."

Okay, so let's try that.

Mister Soldier 1: (a.k.a. "Adolfo Navarro")
74 Aim (x3 = 222)
-8 Defense (x1.5 = -12)
1 Dodge (x1 = 1)
23 Will (x1 = 23)
4 Hacking (x1 = 4)
3 Health (x12 = 36)
14 Mobility (x12 = 168)
?? Psi Offense (x1 = ___)
_____________________________
This sums up to 442. Rookies are supposed to generate with 478 stat points, so therefore Mister Soldier 1 should have 478 - 442 = 36 Psi Offense (a stat with a weight multiplier of 1). However, after doing the autopsy I discovered that the game has them listed as having just 30.

Miss Soldier 2: (a.k.a. "Beth Williams")
61 Aim (x3 = 183)
2 Defense (x1.5 = 3)
9 Dodge (x1 = 9)
26 Will (x1 = 26)
7 Hacking (x1 = 7)
3 Health (x12 = 36)
15 Mobility (x12 = 180)
?? Psi Offense (x1 = ___)
_____________________________
This sums up to 444. So, as above, 478 - 44 = 34, and so 34 is what I'd expect their Psi Offense to be. The game indicates they in fact have 33 (somehow higher than Mister Soldier 1, who has used up less of their stat points on non-psi)



EDIT: For sanity, here's an actual screenshot of "Mister Soldier 1" and "Miss Soldier 2" -
https://www.dropbox.com/s/gsynu9y0gtotw ... 0Equal.png
Clibanarius
Posts: 205
Joined: Sun Feb 05, 2017 1:33 am

Re: Not Created Equally: Something's off here...

Post by Clibanarius »

I think I found the error in your math: Certain things are calculated at different values. Dissecting the Toolbox.ini, I can see one instance of that being where Offense is traded 1:2 for PsiOffense. Any instances of that stat trade happening-- either Psi Offense to Aim or Aim to Psi Offense-- and you lose a point of the 478. I'm also seeing Defense<->PsiOffense as losing that remainder of half a point any time it occurs. Although there's actually a few stat trades that benefit the pool, like Defense for Dodge, which is done variably at 2:3 or 3:6. Dodge is typically worth one point of the pool.
Lyzak
Posts: 81
Joined: Thu May 18, 2017 5:01 pm

Re: Not Created Equally: Something's off here...

Post by Lyzak »

Interesting. I can't say that's an "error in my math," but rather an error in the wiki's reported information; I wonder if that calculation scheme intentional, or perhaps an error in Pavonis' math? Obviously I didn't design Not Created Equally, nor have I given any thought to what would be "balanced and fair," but it strikes me as odd that certain stat-point exchanges between any given two values may occur with different weights than in one of those values is a different stat.

I also wonder if this was a change from v1.2 or if that's the way it always was.
Franzy
Posts: 69
Joined: Thu Apr 06, 2017 9:05 am

Re: Not Created Equally: Something's off here...

Post by Franzy »

Yes, there is an obvious mistake in INI file. In some cases PSI considered worth 1.5 points, while in others just 1 point. Which may result in different stat summs for different soldiers.
wobuffet
Posts: 92
Joined: Mon Jan 23, 2017 3:09 am

Re: Not Created Equally: Something's off here...

Post by wobuffet »

I've tried to fix it.

Go to \Steam\steamapps\workshop\content\268500\844674609\Config
and open XComLW_Toolbox.ini
, then replace lines 55–99 with

Code: Select all

;stat swaps are used to configure offsets for initial stats. Note that all swaps can be "reversed" with the StatDown value increasing and the StatUp decreasing
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=1,	StatDown=eStat_Defense,		StatDown_Amount=2, Weight=1.5f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=2,	StatDown=eStat_Defense,		StatDown_Amount=4, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=3,	StatDown=eStat_Defense,		StatDown_Amount=6, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=4,	StatDown=eStat_Defense,		StatDown_Amount=8, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=5,	StatDown=eStat_Defense,		StatDown_Amount=10, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=1,	StatDown=eStat_Will,		StatDown_Amount=3, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=2,	StatDown=eStat_Will,		StatDown_Amount=6, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=4,	StatDown=eStat_Mobility,	StatDown_Amount=1, Weight=1.5f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=4,	StatDown=eStat_HP,			StatDown_Amount=1, Weight=1.5f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=1,	StatDown=eStat_Hacking,		StatDown_Amount=3, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=1,	StatDown=eStat_PsiOffense,	StatDown_Amount=3, Weight=0.5f) ;!!FIXED
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=2,	StatDown=eStat_PsiOffense,	StatDown_Amount=6, Weight=0.5f) ;!!FIXED
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=3,	StatDown=eStat_PsiOffense,	StatDown_Amount=9, Weight=0.5f) ;!!FIXED
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=1,	StatDown=eStat_Dodge,		StatDown_Amount=3, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Offense,	StatUp_Amount=2,	StatDown=eStat_Dodge,		StatDown_Amount=6, Weight=0.5f)

+STAT_SWAPS=(StatUp=eStat_HP,		StatUp_Amount=1,	StatDown=eStat_Mobility,	StatDown_Amount=1, Weight=2.0f)

+STAT_SWAPS=(StatUp=eStat_Defense,	StatUp_Amount=2,	StatDown=eStat_Will,		StatDown_Amount=3, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Defense,	StatUp_Amount=4,	StatDown=eStat_Will,		StatDown_Amount=6, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Defense,	StatUp_Amount=2,	StatDown=eStat_PsiOffense,	StatDown_Amount=3, Weight=1.0f) ;!!FIXED
+STAT_SWAPS=(StatUp=eStat_Defense,	StatUp_Amount=2,	StatDown=eStat_Dodge,		StatDown_Amount=3, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Defense,	StatUp_Amount=3,	StatDown=eStat_Dodge,		StatDown_Amount=6, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Defense,	StatUp_Amount=2,	StatDown=eStat_Hacking,		StatDown_Amount=3, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)

+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=1,	StatDown=eStat_Will,	StatDown_Amount=1, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=2,	StatDown=eStat_Will,	StatDown_Amount=2, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=3,	StatDown=eStat_Will,	StatDown_Amount=3, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=4,	StatDown=eStat_Will,	StatDown_Amount=4, Weight=1.0f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=1,	StatDown=eStat_Hacking,	StatDown_Amount=1, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=2,	StatDown=eStat_Hacking,	StatDown_Amount=2, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=3,	StatDown=eStat_Hacking,	StatDown_Amount=3, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=4,	StatDown=eStat_Hacking,	StatDown_Amount=4, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=1,	StatDown=eStat_PsiOffense,	StatDown_Amount=1, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=2,	StatDown=eStat_PsiOffense,	StatDown_Amount=2, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=3,	StatDown=eStat_PsiOffense,	StatDown_Amount=3, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Dodge,	StatUp_Amount=4,	StatDown=eStat_PsiOffense,	StatDown_Amount=4, Weight=0.5f)

+STAT_SWAPS=(StatUp=eStat_Will,		StatUp_Amount=1,	StatDown=eStat_Hacking,		StatDown_Amount=1, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Will,		StatUp_Amount=2,	StatDown=eStat_Hacking,		StatDown_Amount=2, Weight=0.5f, DoesNotApplyToFirstMissionSoldiers=false)
+STAT_SWAPS=(StatUp=eStat_Will,		StatUp_Amount=1,	StatDown=eStat_PsiOffense,	StatDown_Amount=1, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Will,		StatUp_Amount=2,	StatDown=eStat_PsiOffense,	StatDown_Amount=2, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Will,		StatUp_Amount=3,	StatDown=eStat_PsiOffense,	StatDown_Amount=3, Weight=0.5f)
+STAT_SWAPS=(StatUp=eStat_Will,		StatUp_Amount=4,	StatDown=eStat_PsiOffense,	StatDown_Amount=4, Weight=0.5f)
Post Reply