1
"Xcom 2 War of the Chosen"
1
10
"Enable"
Auto Assembler Script
[ENABLE]
alloc(newmem,2048)
label(bEnableMinHealth)
label(fMinHealth)
label(bEnableHealing)
label(bEnableMinAim)
label(fMinAim)
label(bEnableMinDefense)
label(fMinDefense)
label(bEnableMinMobility)
label(fMinMobility)
label(bEnableMinWill)
label(fMinWill)
label(bEnableMinHacking)
label(fMinArmor)
label(bEnableMinArmor)
label(fMinHacking)
label(bEnableMinSight)
label(fMinSight)
label(bEnableMinDodge)
label(fMinDodge)
label(bEnableMinDetectionRadius)
label(fMinDetectionRadius)
label(bEnableMinFlankingCritChance)
label(fMinFlankingCritChance)
label(bEnableMinArmorPiercing)
label(fMinArmorPiercing)
label(bEnableMinCritChance)
label(fMinCritChance)
registersymbol(bEnableMinHealth)
registersymbol(fMinHealth)
registersymbol(bEnableHealing)
registersymbol(bEnableMinAim)
registersymbol(fMinAim)
registersymbol(bEnableMinDefense)
registersymbol(fMinDefense)
registersymbol(bEnableMinMobility)
registersymbol(fMinMobility)
registersymbol(bEnableMinWill)
registersymbol(fMinWill)
registersymbol(bEnableMinArmor)
registersymbol(fMinArmor)
registersymbol(bEnableMinHacking)
registersymbol(fMinHacking)
registersymbol(bEnableMinSight)
registersymbol(fMinSight)
registersymbol(bEnableMinDodge)
registersymbol(fMinDodge)
registersymbol(bEnableMinDetectionRadius)
registersymbol(fMinDetectionRadius)
registersymbol(bEnableMinFlankingCritChance)
registersymbol(fMinFlankingCritChance)
registersymbol(bEnableMinArmorPiercing)
registersymbol(fMinArmorPiercing)
registersymbol(bEnableMinCritChance)
registersymbol(fMinCritChance)
newmem:
bEnableMinHealth:
dd 0
fMinHealth:
dd (float)25.0
bEnableHealing:
dd 0
bEnableMinAim:
dd 0
fMinAim:
dd (float)150.0
bEnableMinDefense:
dd 0
fMinDefense:
dd (float)20.0
bEnableMinMobility:
dd 0
fMinMobility:
dd (float)30.0
bEnableMinWill:
dd 0
fMinWill:
dd (float)150.0
bEnableMinArmor:
dd 0
fMinArmor:
dd (float)25.0
bEnableMinHacking:
dd 0
fMinHacking:
dd (float)175.0
bEnableMinSight:
dd 0
fMinSight:
dd (float)55.0
bEnableMinDodge:
dd 0
fMinDodge:
dd (float)25.0
bEnableMinDetectionRadius:
dd 0
fMinDetectionRadius:
dd (float)16.0
bEnableMinFlankingCritChance:
dd 0
fMinFlankingCritChance:
dd (float)90.0
bEnableMinArmorPiercing:
dd 0
fMinArmorPiercing:
dd (float)25.0
bEnableMinCritChance:
dd 0
fMinCritChance:
dd (float)50.0
[DISABLE]
unregistersymbol(bEnableMinHealth)
unregistersymbol(fMinHealth)
unregistersymbol(bEnableHealing)
unregistersymbol(bEnableMinAim)
unregistersymbol(fMinAim)
unregistersymbol(bEnableMinDefense)
unregistersymbol(fMinDefense)
unregistersymbol(bEnableMinMobility)
unregistersymbol(fMinMobility)
unregistersymbol(bEnableMinWill)
unregistersymbol(fMinWill)
unregistersymbol(bEnableMinArmor)
unregistersymbol(fMinArmor)
unregistersymbol(bEnableMinHacking)
unregistersymbol(fMinHacking)
unregistersymbol(bEnableMinSight)
unregistersymbol(fMinSight)
unregistersymbol(bEnableMinDodge)
unregistersymbol(fMinDodge)
unregistersymbol(bEnableMinDetectionRadius)
unregistersymbol(fMinDetectionRadius)
unregistersymbol(bEnableMinFlankingCritChance)
unregistersymbol(fMinFlankingCritChance)
unregistersymbol(bEnableMinArmorPiercing)
unregistersymbol(fMinArmorPiercing)
unregistersymbol(bEnableMinCritChance)
unregistersymbol(fMinArmorCritChance)
dealloc(newmem)
80
"Personal Enable Setting Minimum Stats (Edit Script To Your Liking)"
Auto Assembler Script
[ENABLE]
bEnableMinHealth:
dd 1
fMinHealth:
dd (float)25.0
bEnableHealing:
dd 1
bEnableMinAim:
dd 1
fMinAim:
dd (float)150.0
bEnableMinDefense:
dd 0
fMinDefense:
dd (float)20.0
bEnableMinMobility:
dd 1
fMinMobility:
dd (float)30.0
bEnableMinWill:
dd 0
fMinWill:
dd (float)150.0
bEnableMinArmor:
dd 1
fMinArmor:
dd (float)10.0
bEnableMinHacking:
dd 1
fMinHacking:
dd (float)175.0
bEnableMinSight:
dd 0
fMinSight:
dd (float)55.0
bEnableMinDodge:
dd 1
fMinDodge:
dd (float)25.0
bEnableMinDetectionRadius:
dd 0
fMinDetectionRadius:
dd (float)16.0
bEnableMinFlankingCritChance:
dd 1
fMinFlankingCritChance:
dd (float)99.0
bEnableMinArmorPiercing:
dd 1
fMinArmorPiercing:
dd (float)25.0
bEnableMinCritChance:
dd 0
fMinCritChance:
dd (float)99.0
[DISABLE]
bEnableMinHealth:
dd 0
bEnableHealing:
dd 0
bEnableMinAim:
dd 0
bEnableMinDefense:
dd 0
bEnableMinMobility:
dd 0
bEnableMinWill:
dd 0
bEnableMinArmor:
dd 0
bEnableMinHacking:
dd 0
bEnableMinSight:
dd 0
bEnableMinDodge:
dd 0
bEnableMinDetectionRadius:
dd 0
bEnableMinFlankingCritChance:
dd 0
bEnableMinArmorPiercing:
dd 0
bEnableMinCritChance:
dd 0
90
"Enable Setting All Minimum Stats"
Auto Assembler Script
[ENABLE]
bEnableMinHealth:
dd 1
bEnableHealing:
dd 1
bEnableMinAim:
dd 1
bEnableMinDefense:
dd 1
bEnableMinMobility:
dd 1
bEnableMinWill:
dd 1
bEnableMinArmor:
dd 1
bEnableMinHacking:
dd 1
bEnableMinSight:
dd 1
bEnableMinDodge:
dd 1
bEnableMinDetectionRadius:
dd 1
bEnableMinFlankingCritChance:
dd 1
bEnableMinArmorPiercing:
dd 1
bEnableMinCritChance:
dd 1
[DISABLE]
bEnableMinHealth:
dd 0
bEnableHealing:
dd 0
bEnableMinAim:
dd 0
bEnableMinDefense:
dd 0
bEnableMinMobility:
dd 0
bEnableMinWill:
dd 0
bEnableMinArmor:
dd 0
bEnableMinHacking:
dd 0
bEnableMinSight:
dd 0
bEnableMinDodge:
dd 0
bEnableMinDetectionRadius:
dd 0
bEnableMinFlankingCritChance:
dd 0
bEnableMinArmorPiercing:
dd 0
bEnableMinCritChance:
dd 0
100
"Minimum Stats Variables"
1
1000
"bEnableMinHealth"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinHealth
1001
"fMinHealth"
FF0000
Float
fMinHealth
1010
"bEnableMinHealth"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinHealth
1020
"bEnableMinAim"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinAim
1021
"fMinAim"
FF0000
Float
fMinAim
1030
"bEnableMinDefense"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinDefense
1031
"fMinDefense"
FF0000
Float
fMinDefense
1040
"bEnableMinMobility"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinMobility
1041
"fMinMobility"
FF0000
Float
fMinMobility
1050
"bEnableMinWill"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinWill
1051
"fMinWill"
FF0000
Float
fMinWill
1060
"bEnableMinHacking"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinHacking
1061
"fMinHacking"
FF0000
Float
fMinHacking
1070
"bEnableMinSight"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinSight
1071
"fMinSight"
FF0000
Float
fMinSight
1080
"bEnableMinDodge"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinDodge
1081
"fMinDodge"
FF0000
Float
fMinDodge
1090
"bEnableMinDetectionRadius"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinDetectionRadius
1091
"fMinDetectionRadius"
FF0000
Float
fMinDetectionRadius
1100
"bEnableMinFlankingCritChance"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinFlankingCritChance
1101
"fMinFlankingCritChance"
FF0000
Float
fMinFlankingCritChance
1110
"bEnableMinArmorPiercing"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinArmorPiercing
1111
"fMinArmorPiercing"
FF0000
Float
fMinArmorPiercing
1120
"bEnableMinCritChance"
0:Disabled
1:Enabled
008000
4 Bytes
bEnableMinCritChance
1121
"fMinCritChance"
FF0000
Float
fMinCritChance
2000
"Soldier Profile"
Auto Assembler Script
[ENABLE]
aobscanmodule(unit,XCom2.exe,F3 0F 10 84 0A 98 01 00 00 C3)
alloc(newmem2,8096,unit)
label(code)
label(return)
label(unit_ptr)
label(unit_save)
label(selected_unit)
registersymbol(selected_unit)
label(lblRankReader)
newmem2:
bEnableMinHealth2:
dd 0
fMinHealth2:
dd (float)0
bEnableHealing2:
dd 0
bEnableMinAim2:
dd 0
fMinAim2:
dd (float)0.0
bEnableMinDefense2:
dd 0
fMinDefense2:
dd (float)0.0
bEnableMinMobility2:
dd 0
fMinMobility2:
dd (float)0.0
bEnableMinWill2:
dd 0
fMinWill2:
dd (float)0.0
bEnableMinArmor2:
dd 0
fMinArmor2:
dd (float)0.0
bEnableMinHacking2:
dd 0
fMinHacking2:
dd (float)0.0
bEnableMinSight2:
dd 0
fMinSight2:
dd (float)0.0
bEnableMinDodge2:
dd 0
fMinDodge2:
dd (float)0.0
bEnableMinDetectionRadius2:
dd 0
fMinDetectionRadius2:
dd (float)0.0
bEnableMinFlankingCritChance2:
dd 0
fMinFlankingCritChance2:
dd (float)0.0
bEnableMinArmorPiercing2:
dd 0
fMinArmorPiercing2:
dd (float)0.0
bEnableMinCritChance2:
dd 0
fMinCritChance2:
dd (float)0.0
code:
push rbx
xor rbx,rbx
mov rax,unit_ptr
StartLoop:
cmp [rax+rbx*8],rcx
je DoneLoop
cmp [rax+rbx*8],0
je WritePtr
inc rbx
cmp rbx,#48
jl StartLoop
jmp DoneLoop
WritePtr:
mov [rax+rbx*8],rcx
DoneLoop:
xor rax,rax
pop rbx
unit_save:
readmem(unit,9)
mov eax,[bEnableMinHealth]
mov [bEnableMinHealth2],eax
mov eax,[fMinHealth]
mov [fMinHealth2],eax
mov eax,[bEnableHealing]
mov [bEnableHealing2],eax
mov eax,[bEnableMinAim]
mov [bEnableMinAim2],eax
mov eax,[fMinAim]
mov [fMinAim2],eax
mov eax,[bEnableMinDefense]
mov [bEnableMinDefense2],eax
mov eax,[fMinDefense]
mov [fMinDefense2],eax
mov eax,[bEnableMinMobility]
mov [bEnableMinMobility2],eax
mov eax,[fMinMobility]
mov [fMinMobility2],eax
mov eax,[bEnableMinWill]
mov [bEnableMinWill2],eax
mov eax,[fMinWill]
mov [fMinWill2],eax
mov eax,[bEnableMinArmor]
mov [bEnableMinArmor2],eax
mov eax,[fMinArmor]
mov [fMinArmor2],eax
mov eax,[bEnableMinHacking]
mov [bEnableMinHacking2],eax
mov eax,[fMinHacking]
mov [fMinHacking2],eax
mov eax,[bEnableMinSight]
mov [bEnableMinSight2],eax
mov eax,[fMinSight]
mov [fMinSight2],eax
mov eax,[bEnableMinDodge]
mov [bEnableMinDodge2],eax
mov eax,[fMinDodge]
mov [fMinDodge2],eax
mov eax,[bEnableMinDetectionRadius]
mov [bEnableMinDetectionRadius2],eax
mov eax,[fMinDetectionRadius]
mov [fMinDetectionRadius2],eax
mov eax,[bEnableMinFlankingCritChance]
mov [bEnableMinFlankingCritChance2],eax
mov eax,[fMinFlankingCritChance]
mov [fMinFlankingCritChance2],eax
mov eax,[bEnableMinArmorPiercing]
mov [bEnableMinArmorPiercing2],eax
mov eax,[fMinArmorPiercing]
mov [fMinArmorPiercing2],eax
mov eax,[bEnableMinCritChance]
mov [bEnableMinCritChance2],eax
mov eax,[fMinCritChance]
mov [fMinCritChance2],eax
lblRankReader:
mov rax,unit_ptr
add rax,[selected_unit]
cmp [rax],rcx
jne return
cmp dword ptr [bEnableMinHealth2],1
jne lblRankReaderSkipHealth
mov eax,[fMinHealth2]
cmp dword ptr [rcx+204],eax
jge lblRankReaderSkipHealth
mov dword ptr [rcx+204],eax
mov dword ptr [rcx+208],eax
lblRankReaderSkipHealth:
cmp dword ptr [bEnableHealing2],1
jne lblRankReaderSkipCurrentHealth
mov eax,[rcx+204]
cmp dword ptr [rcx+200],eax
jge lblRankReaderSkipCurrentHealth
mov dword ptr [rcx+200],eax
lblRankReaderSkipCurrentHealth:
cmp dword ptr [bEnableMinAim2],1
jne lblRankReaderSkipAim
mov eax,[fMinAim2]
cmp dword ptr [rcx+234],eax
jge lblRankReaderSkipAim
mov dword ptr [rcx+234],eax
mov dword ptr [rcx+238],eax
mov dword ptr [rcx+23C],eax
lblRankReaderSkipAim:
cmp dword ptr [bEnableMinDefense2],1
jne lblRankReaderSkipDefense
mov eax,[fMinDefense2]
cmp dword ptr [rcx+268],eax
jge lblRankReaderSkipDefense
mov dword ptr [rcx+268],eax
mov dword ptr [rcx+26C],eax
mov dword ptr [rcx+270],eax
lblRankReaderSkipDefense:
cmp dword ptr [bEnableMinMobility2],1
jne lblRankReaderSkipMobility
mov eax,[fMinMobility2]
cmp dword ptr [rcx+29C],eax
jge lblRankReaderSkipMobility
mov dword ptr [rcx+29C],eax
mov dword ptr [rcx+2A0],eax
mov dword ptr [rcx+2A4],eax
lblRankReaderSkipMobility:
cmp dword ptr [rcx+B38],0 // Test 'Before Shaken'
jne lblRankReaderSkipWill
cmp dword ptr [bEnableMinWill2],1
jne lblRankReaderSkipWill
mov eax,[fMinWill2]
cmp dword ptr [rcx+2D0],eax
jge lblRankReaderSkipWill
mov dword ptr [rcx+2D0],eax
mov dword ptr [rcx+2D4],eax
mov dword ptr [rcx+2D8],eax
lblRankReaderSkipWill:
cmp dword ptr [bEnableMinArmor2],1
jne lblRankReaderSkipArmor
mov eax,[fMinArmor2]
cmp dword ptr [rcx+470],eax
jge lblRankReaderSkipArmor
mov dword ptr [rcx+470],eax
mov dword ptr [rcx+474],eax
mov dword ptr [rcx+478],eax
lblRankReaderSkipArmor:
cmp dword ptr [bEnableMinHacking2],1
jne lblRankReaderSkipHacking
mov eax,[fMinHacking2]
cmp dword ptr [rcx+304],eax
jge lblRankReaderSkipHacking
mov dword ptr [rcx+304],eax
mov dword ptr [rcx+308],eax
mov dword ptr [rcx+30C],eax
lblRankReaderSkipHacking:
cmp dword ptr [bEnableMinSight2],1
jne short lblRankReaderSkipSight
mov eax,[fMinSight2]
cmp dword ptr [rcx+338],eax
jge lblRankReaderSkipSight
mov dword ptr [rcx+338],eax
mov dword ptr [rcx+33C],eax
mov dword ptr [rcx+340],eax
lblRankReaderSkipSight:
cmp dword ptr [bEnableMinDodge2],1
jne lblRankReaderSkipDodge
mov eax,[fMinDodge2]
cmp dword ptr [rcx+408],eax
jge lblRankReaderSkipDodge
mov dword ptr [rcx+408],eax
mov dword ptr [rcx+40C],eax
mov dword ptr [rcx+410],eax
lblRankReaderSkipDodge:
cmp dword ptr [bEnableMinDetectionRadius2],1
jne lblRankReaderSkipDetectionRadius
mov eax,[fMinDetectionRadius2]
cmp dword ptr [rcx+540],eax
jge lblRankReaderSkipDetectionRadius
mov dword ptr [rcx+540],eax
mov dword ptr [rcx+544],eax
mov dword ptr [rcx+548],eax
lblRankReaderSkipDetectionRadius:
cmp dword ptr [bEnableMinFlankingCritChance2],1
jne lblRankReaderSkipFlankingCritChance
mov eax,[fMinFlankingCritChance2]
cmp dword ptr [rcx+6AC],eax
jge lblRankReaderSkipFlankingCritChance
mov dword ptr [rcx+6AC],eax
mov dword ptr [rcx+6B0],eax
mov dword ptr [rcx+6B4],eax
lblRankReaderSkipFlankingCritChance:
cmp dword ptr [bEnableMinArmorPiercing2],1
jne lblRankReaderSkipArmorPiercing
mov eax,[fMinArmorPiercing2]
cmp dword ptr [rcx+4A4],eax
jge lblRankReaderSkipArmorPiercing
mov dword ptr [rcx+4A4],eax
mov dword ptr [rcx+4A8],eax
mov dword ptr [rcx+4AC],eax
lblRankReaderSkipArmorPiercing:
cmp dword ptr [bEnableMinCritChance2],1
jne lblRankReaderSkipCritChance
mov eax,[fMinCritChance2]
cmp dword ptr [rcx+548],eax
jge lblRankReaderSkipCritChance
mov dword ptr [rcx+548],eax
mov dword ptr [rcx+54C],eax
mov dword ptr [rcx+550],eax
lblRankReaderSkipCritChance:
jmp return
selected_unit:
dq 0
unit_ptr:
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
dq 0
unit:
jmp code
nop
nop
nop
nop
return:
registersymbol(unit)
registersymbol(unit_ptr)
registersymbol(unit_save)
[DISABLE]
unit:
db F3 0F 10 84 0A 98 01 00 00
unregistersymbol(unit)
unregistersymbol(unit_ptr)
unregistersymbol(unit_save)
unregistersymbol(selected_unit)
dealloc(newmem2)
2001
"Selected Unit"
0000:Unit 1
0008:Unit 2
0010:Unit 3
0018:Unit 4
0020:Unit 5
0028:Unit 6
0030:Unit 7
0038:Unit 8
0040:Unit 9
0048:Unit 10
0050:Unit 11
0058:Unit 12
0060:Unit 13
0068:Unit 14
0070:Unit 15
0078:Unit 16
0080:Unit 17
0088:Unit 18
0090:Unit 19
0098:Unit 20
00A0:Unit 21
00A8:Unit 22
00B0:Unit 23
00B8:Unit 24
00C0:Unit 25
00C8:Unit 26
00D0:Unit 27
00D8:Unit 28
00E0:Unit 29
00E8:Unit 30
00F0:Unit 31
00F8:Unit 32
0100:Unit 33
0108:Unit 34
0110:Unit 35
0118:Unit 36
0120:Unit 37
0128:Unit 38
0130:Unit 39
0138:Unit 40
0140:Unit 41
0148:Unit 42
0150:Unit 43
0158:Unit 44
0160:Unit 45
0168:Unit 46
0170:Unit 47
0178:Unit 48
1
4 Bytes
selected_unit
2010
"Show/Hide Profile"
1
2011
"Base Address"
String
0
0
0
1
unit_ptr+[selected_unit]
0
2012
"First Name"
String
32
1
0
1
+A88
0
2013
"Last Name"
String
32
1
0
1
+A98
0
14855
"Combat Int"
1
4 Bytes
+788
14856
"Ability Points"
4 Bytes
+158
2014
"Health"
Float
+200
2015
"Health 2"
Float
+204
2016
"Health 3"
Float
+208
2020
"Show/Hide Stats"
1
2021
"Base Address"
String
0
0
0
1
unit_ptr+[selected_unit]
0
2022
"Rank"
4 Bytes
+124
2023
"Mobility"
Float
+29C
2024
"Mobility 2"
Float
+2A0
2025
"Mobility 3"
Float
+2A4
2026
"Aim"
Float
+234
2027
"Aim 2"
Float
+238
2028
"Aim 3"
Float
+23C
2029
"Will"
Float
+2D0
2030
"Will 2"
Float
+2D4
2031
"Will 3"
Float
+2D8
2032
"Armor"
Float
+470
2033
"Armor 2"
Float
+474
2034
"Armor 3"
Float
+478
2035
"Armor Piercing"
Float
+4A4
2036
"Armor Piercing 2"
Float
+4A8
2037
"Armor Piercing 3"
Float
+4AC
2038
"Dodge"
Float
+408
2039
"Dodge 2"
Float
+40C
2040
"Dodge 3"
Float
+410
2041
"Hack"
Float
+304
2042
"Hack 2"
Float
+308
2043
"Hack 3"
Float
+30C
2044
"PSI"
Float
+4D8
2045
"PSI 2"
Float
+4DC
2046
"PSI 3"
Float
+4E0
2047
"Critical Chance"
Float
+548
2048
"Critical Chance 2"
Float
+54C
2049
"Critical Chance 3"
Float
+550
2050
"Show/Hide Properties"
1
2051
"Base Address"
String
0
0
0
1
unit_ptr+[selected_unit]
0
2052
"Utility Slots"
Float
+1CC
2053
"Sight"
Float
+338
2054
"Number of Additional Skills"
4 Bytes
+B6C
2055
"Additional Skill 1"
1
4 Bytes
+B64
0
14803
"Show/Hide Skills"
1
14853
"When unlocking all skills, you may need to adjust one of the last two skills, depending on class."
0000FF
1
14820
"Unlock All Skills for This Soldier"
Auto Assembler Script
[ENABLE]
alloc(newmem,100)
newmem:
dd 1
dd 0
dd 1
dd 1
dd 2
dd 0
dd 2
dd 1
dd 3
dd 0
dd 3
dd 1
dd 4
dd 0
dd 4
dd 1
dd 5
dd 0
dd 5
dd 1
dd 6
dd 0
dd 6
dd 1
dd 0
dd 1
dd 0
dd 0
[unit_ptr]+114:
dq newmem
[unit_ptr]+11C:
dd #14
[DISABLE]
14852
"Do NOT increase the value for the Number of Skills address!"
0000FF
1
14804
"Number of Skills"
4 Bytes
unit_ptr+[selected_unit]
11C
14854
"Modify Soldier Skills"
1
14851
"Do NOT touch skills past the Number of Skills listed above!"
0000FF
1
14822
"Base Address"
String
0
0
0
1
unit_ptr+[selected_unit]
0
114
14823
"Skill 1 Row Number"
4 Bytes
+0
14824
"Skill 1 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+4
14825
"Skill 2 Row Number"
4 Bytes
+8
14826
"Skill 2 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+c
14827
"Skill 3 Row Number"
4 Bytes
+10
14828
"Skill 3 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+14
14829
"Skill 4 Row Number"
4 Bytes
+18
14830
"Skill 4 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+1c
14831
"Skill 5 Row Number"
4 Bytes
+20
14832
"Skill 5 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+24
14833
"Skill 6 Row Number"
4 Bytes
+28
14834
"Skill 6 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+2c
14835
"Skill 7 Row Number"
4 Bytes
+30
14836
"Skill 7 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+34
14837
"Skill 8 Row Number"
4 Bytes
+38
14838
"Skill 8 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+3c
14839
"Skill 9 Row Number"
4 Bytes
+40
14840
"Skill 9 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+44
14841
"Skill 10 Row Number"
4 Bytes
+48
14842
"Skill 10 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+4c
14843
"Skill 11 Row Number"
4 Bytes
+50
14844
"Skill 11 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+54
14845
"Skill 12 Row Number"
4 Bytes
+58
14846
"Skill 12 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+5c
14847
"Skill 13 Row Number"
4 Bytes
+60
14848
"Skill 13 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+64
14849
"Skill 14 Row Number"
4 Bytes
+68
14850
"Skill 14 Left/Right"
0:Left
1:Right
2:Unselected
4 Bytes
+6c