Warrior classes¶
The playable Warriors' stats: a player's health and damage scales, rage, and how hard each context game is for him
(the cuffing hold, the uncuff mash, tagging, lock picking, the car stereo theft and mugging).
CfgWarriorClass(class, ...) fills a 14-byte record at 0x006b65c0 + class × 14; a player's class is human +0x1ba,
picked by character type (0x00222c20): 0 Ajax, 1 Cleon, 2 Cochise, 3 Cowboy, 4 Fox, 5 Vermin, 6 Rembrandt and Ash,
7 Snow, 8 Swan, and 9 for every other type. Each difficulty script sets all nine; config_preload2.lua sets class 9
once at boot, and normal's at boot.
Every reader goes through Human_GetWarriorClassRecord (0x00222b58), by the human's class +0x1ba.
Confirmed (code) at each address:
| Byte | Field | Read by | What it does |
|---|---|---|---|
+0x00 (16-bit) |
Rage max | 0x00223260 |
the rage maximum (Combat: rage) |
+0x02 |
Rage gain % | 0x00264cf8 |
the rage gain percentage (Combat: rage) |
+0x03, +0x04 |
Rage decay, drain | 0x002562d0 |
idle decay and drain while raging, percent of the maximum per 20 s |
+0x05 |
Health % | 0x00229c40, 0x0022a2a8 |
health and its maximum (human record +0x144, +0x146) times n %, rounded, when the human becomes a player; divided back when he stops being one |
+0x06 |
Damage % | 0x00229c40, 0x00217a98, 0x00236038, 0x001e5618 |
his attack damages times n %; the Strength bar of the pause Stats screen |
+0x07 |
Cuffing | 0x00282b68, 0x00283078 |
the cuffing hold's times, for a player holding or held: 2, 3 or any other |
+0x08 |
Mash | 0x0027e6d8 |
the uncuff mash's gain per alternation: 1 × 1.5, 3 × 0.7, any other × 1 (Combat) |
+0x09 |
Tagging | 0x002739d8 |
the tagging game's tuning row 1-3 (0 counts as 1, above 3 as 3) |
+0x0a |
Lock pick | 0x0022d790 |
the lock-pick dial's difficulty, n − 1 (0-2) |
+0x0b |
Stereo | 0x0022dd08 |
the stereo theft's turns per stage: 1 when n ≤ 1, else 3 × (n − 1) |
+0x0c |
Mugging | 0x00284ca0 |
the mugging game's times, for the mugging player: 2, 3 or any other |
+0x0d |
+0x0d |
none | stored, never read |
The lock-pick difficulty on normal: 0 for Cowboy, Fox and Rembrandt, 1 for Cleon, Cochise and Snow, 2 for Ajax,
Vermin and Swan; every difficulty turns the pins at the same speeds, only their directions and the target bands
change (Crimes: lock picking). +0x0d has no reader: the table is addressed
only by Cfg_SetWarriorClass (0x00228a70) and WarriorClass_Get (0x00228848), whose one caller is
0x00222b58, and none of that function's 16 callers reads +0x0d (inferred from the code: an absence).
What is complete
Every class each difficulty sets is listed with every argument (nine per difficulty and the boot class 9), and every byte's reader is traced.
46 entries. Data: research/references/warrior-classes.yaml.
easy¶
9 entries.
| Id | Class | Warrior | Health % | Damage % | Rage max | Rage gain % | Rage decay | Rage drain | Cuffing | Mash | Tagging | Lock pick | Stereo | Mugging | +0x0d | Power class | Types |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
easy:0 |
0 | Ajax | 105 | 190 | 150 | 212 | 110 | 170 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 58 | 11, 12, 13, 14 |
easy:1 |
1 | Cleon | 105 | 180 | 120 | 172 | 100 | 168 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 59 | 1, 2, 3, 4, 189 |
easy:2 |
2 | Cochise | 75 | 170 | 120 | 172 | 100 | 168 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 60 | 15, 16, 17 |
easy:3 |
3 | Cowboy | 70 | 150 | 120 | 166 | 80 | 156 | 2 | 1 | 2 | 1 | 2 | 2 | 1 | 61 | 18, 19, 20, 188 |
easy:4 |
4 | Fox | 70 | 150 | 150 | 154 | 100 | 240 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | 62 | 21, 22, 23, 24, 25 |
easy:5 |
5 | Vermin | 85 | 160 | 100 | 154 | 90 | 240 | 2 | 1 | 2 | 2 | 1 | 2 | 2 | 63 | 26, 27, 28, 29, 191 |
easy:6 |
6 | Rembrandt, Ash | 70 | 150 | 78 | 154 | 200 | 240 | 2 | 1 | 1 | 1 | 2 | 2 | 2 | 64 | 30, 31, 32, 38, 39, 40 |
easy:7 |
7 | Snow | 80 | 170 | 120 | 166 | 100 | 168 | 1 | 1 | 2 | 2 | 1 | 2 | 2 | 65 | 33, 34, 35, 36, 37, 190 |
easy:8 |
8 | Swan | 95 | 180 | 96 | 154 | 70 | 132 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 66 | 5, 6, 7, 8, 9, 10 |
normal¶
9 entries.
| Id | Class | Warrior | Health % | Damage % | Rage max | Rage gain % | Rage decay | Rage drain | Cuffing | Mash | Tagging | Lock pick | Stereo | Mugging | +0x0d | Power class | Types |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
normal:0 |
0 | Ajax | 85 | 155 | 150 | 202 | 110 | 170 | 1 | 3 | 3 | 3 | 3 | 1 | 2 | 58 | 11, 12, 13, 14 |
normal:1 |
1 | Cleon | 85 | 145 | 120 | 162 | 110 | 168 | 1 | 3 | 2 | 2 | 3 | 2 | 2 | 59 | 1, 2, 3, 4, 189 |
normal:2 |
2 | Cochise | 55 | 135 | 120 | 162 | 100 | 168 | 2 | 2 | 3 | 2 | 2 | 2 | 2 | 60 | 15, 16, 17 |
normal:3 |
3 | Cowboy | 50 | 115 | 120 | 160 | 110 | 156 | 3 | 1 | 2 | 1 | 2 | 2 | 1 | 61 | 18, 19, 20, 188 |
normal:4 |
4 | Fox | 50 | 115 | 150 | 144 | 100 | 240 | 3 | 1 | 2 | 1 | 2 | 3 | 2 | 62 | 21, 22, 23, 24, 25 |
normal:5 |
5 | Vermin | 65 | 125 | 100 | 144 | 100 | 240 | 2 | 3 | 3 | 3 | 1 | 2 | 2 | 63 | 26, 27, 28, 29, 191 |
normal:6 |
6 | Rembrandt, Ash | 50 | 115 | 78 | 144 | 200 | 240 | 3 | 1 | 1 | 1 | 2 | 3 | 2 | 64 | 30, 31, 32, 38, 39, 40 |
normal:7 |
7 | Snow | 60 | 135 | 120 | 156 | 100 | 168 | 1 | 2 | 3 | 2 | 1 | 1 | 2 | 65 | 33, 34, 35, 36, 37, 190 |
normal:8 |
8 | Swan | 75 | 145 | 96 | 144 | 125 | 170 | 1 | 3 | 3 | 3 | 2 | 1 | 2 | 66 | 5, 6, 7, 8, 9, 10 |
hard¶
9 entries.
| Id | Class | Warrior | Health % | Damage % | Rage max | Rage gain % | Rage decay | Rage drain | Cuffing | Mash | Tagging | Lock pick | Stereo | Mugging | +0x0d | Power class | Types |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hard:0 |
0 | Ajax | 45 | 119 | 150 | 202 | 140 | 195 | 1 | 3 | 3 | 3 | 3 | 1 | 2 | 58 | 11, 12, 13, 14 |
hard:1 |
1 | Cleon | 45 | 111 | 120 | 162 | 140 | 190 | 1 | 3 | 2 | 2 | 3 | 1 | 2 | 59 | 1, 2, 3, 4, 189 |
hard:2 |
2 | Cochise | 35 | 102 | 120 | 162 | 135 | 190 | 2 | 2 | 3 | 2 | 2 | 1 | 2 | 60 | 15, 16, 17 |
hard:3 |
3 | Cowboy | 30 | 85 | 120 | 160 | 120 | 175 | 3 | 1 | 2 | 1 | 2 | 3 | 1 | 61 | 18, 19, 20, 188 |
hard:4 |
4 | Fox | 30 | 85 | 150 | 144 | 130 | 240 | 3 | 1 | 2 | 1 | 2 | 3 | 2 | 62 | 21, 22, 23, 24, 25 |
hard:5 |
5 | Vermin | 45 | 94 | 100 | 144 | 125 | 240 | 2 | 3 | 3 | 3 | 1 | 2 | 2 | 63 | 26, 27, 28, 29, 191 |
hard:6 |
6 | Rembrandt, Ash | 30 | 85 | 78 | 144 | 200 | 240 | 3 | 1 | 1 | 1 | 2 | 3 | 2 | 64 | 30, 31, 32, 38, 39, 40 |
hard:7 |
7 | Snow | 40 | 102 | 120 | 156 | 125 | 195 | 1 | 2 | 3 | 2 | 1 | 1 | 2 | 65 | 33, 34, 35, 36, 37, 190 |
hard:8 |
8 | Swan | 45 | 111 | 96 | 144 | 145 | 200 | 1 | 3 | 3 | 3 | 2 | 1 | 2 | 66 | 5, 6, 7, 8, 9, 10 |
fury¶
9 entries.
| Id | Class | Warrior | Health % | Damage % | Rage max | Rage gain % | Rage decay | Rage drain | Cuffing | Mash | Tagging | Lock pick | Stereo | Mugging | +0x0d | Power class | Types |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
fury:0 |
0 | Ajax | 45 | 119 | 150 | 202 | 110 | 170 | 1 | 3 | 3 | 3 | 3 | 1 | 2 | 58 | 11, 12, 13, 14 |
fury:1 |
1 | Cleon | 45 | 111 | 120 | 162 | 100 | 168 | 1 | 3 | 2 | 2 | 3 | 1 | 2 | 59 | 1, 2, 3, 4, 189 |
fury:2 |
2 | Cochise | 35 | 102 | 120 | 162 | 100 | 168 | 2 | 2 | 3 | 2 | 2 | 1 | 2 | 60 | 15, 16, 17 |
fury:3 |
3 | Cowboy | 30 | 85 | 120 | 160 | 80 | 156 | 3 | 1 | 2 | 1 | 2 | 3 | 1 | 61 | 18, 19, 20, 188 |
fury:4 |
4 | Fox | 30 | 85 | 150 | 144 | 100 | 240 | 3 | 1 | 2 | 1 | 2 | 3 | 2 | 62 | 21, 22, 23, 24, 25 |
fury:5 |
5 | Vermin | 45 | 94 | 100 | 144 | 90 | 240 | 2 | 3 | 3 | 3 | 1 | 2 | 2 | 63 | 26, 27, 28, 29, 191 |
fury:6 |
6 | Rembrandt, Ash | 30 | 85 | 78 | 144 | 200 | 240 | 3 | 1 | 1 | 1 | 2 | 3 | 2 | 64 | 30, 31, 32, 38, 39, 40 |
fury:7 |
7 | Snow | 40 | 102 | 120 | 156 | 100 | 168 | 1 | 2 | 3 | 2 | 1 | 1 | 2 | 65 | 33, 34, 35, 36, 37, 190 |
fury:8 |
8 | Swan | 45 | 111 | 96 | 144 | 70 | 132 | 1 | 3 | 3 | 3 | 2 | 1 | 2 | 66 | 5, 6, 7, 8, 9, 10 |
rumble¶
9 entries.
| Id | Class | Warrior | Health % | Damage % | Rage max | Rage gain % | Rage decay | Rage drain | Cuffing | Mash | Tagging | Lock pick | Stereo | Mugging | +0x0d | Power class | Types |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
rumble:0 |
0 | Ajax | 100 | 115 | 150 | 202 | 110 | 170 | 1 | 3 | 3 | 3 | 3 | 1 | 2 | 58 | 11, 12, 13, 14 |
rumble:1 |
1 | Cleon | 100 | 115 | 120 | 162 | 100 | 168 | 1 | 3 | 2 | 2 | 3 | 1 | 2 | 59 | 1, 2, 3, 4, 189 |
rumble:2 |
2 | Cochise | 100 | 115 | 120 | 162 | 100 | 168 | 2 | 2 | 3 | 2 | 2 | 1 | 2 | 60 | 15, 16, 17 |
rumble:3 |
3 | Cowboy | 100 | 115 | 120 | 156 | 80 | 156 | 3 | 1 | 2 | 1 | 2 | 3 | 1 | 61 | 18, 19, 20, 188 |
rumble:4 |
4 | Fox | 100 | 115 | 150 | 144 | 100 | 240 | 3 | 1 | 2 | 1 | 2 | 3 | 2 | 62 | 21, 22, 23, 24, 25 |
rumble:5 |
5 | Vermin | 100 | 115 | 100 | 144 | 90 | 240 | 2 | 3 | 3 | 3 | 1 | 2 | 2 | 63 | 26, 27, 28, 29, 191 |
rumble:6 |
6 | Rembrandt, Ash | 100 | 115 | 78 | 144 | 200 | 240 | 3 | 1 | 1 | 1 | 2 | 3 | 2 | 64 | 30, 31, 32, 38, 39, 40 |
rumble:7 |
7 | Snow | 100 | 115 | 120 | 156 | 100 | 168 | 1 | 2 | 3 | 2 | 1 | 1 | 2 | 65 | 33, 34, 35, 36, 37, 190 |
rumble:8 |
8 | Swan | 100 | 115 | 96 | 144 | 70 | 132 | 1 | 3 | 3 | 3 | 2 | 1 | 2 | 66 | 5, 6, 7, 8, 9, 10 |
boot¶
1 entries.
| Id | Class | Warrior | Health % | Damage % | Rage max | Rage gain % | Rage decay | Rage drain | Cuffing | Mash | Tagging | Lock pick | Stereo | Mugging | +0x0d | Power class |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
boot:9 |
9 | everyone else | 85 | 135 | 120 | 162 | 100 | 168 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 7 |
Sources and evidence¶
Evidence levels used: confirmed-code.
- config_
.lua, CfgWarriorClass
Fields¶
| Field | Type | Hand-written | Meaning |
|---|---|---|---|
id |
str | <difficulty>:<class>. |
|
difficulty |
str | The difficulty script that sets it (boot: config_preload2.lua only). |
|
class |
int | Warrior class (CfgWarriorClass's first argument; record 0x006b65c0 + class x 14). |
|
warrior |
str | Who gets it as a player. | |
health_scale |
int | Byte +0x05: a player's health and its maximum in percent (Human_MakePlayer, 0x00229c40). |
|
damage_scale |
int | Byte +0x06: the player's damage scale in percent; the pause Stats screen's Strength bar. |
|
rage_max |
int | 16-bit +0x00: the rage maximum. |
|
rage_gain |
int | Byte +0x02: the rage gain percentage. |
|
rage_decay |
int | Byte +0x03: idle rage decay (percent of the maximum per 20 s). |
|
rage_drain |
int | Byte +0x04: rage drain while raging (percent of the maximum per 20 s). |
|
cuffing |
int | Byte +0x07: picks the cuffing hold's stick-game times, 2, 3 or any other (0x00282b68, 0x00283078). |
|
mash |
int | Byte +0x08: the uncuff mash's gain per alternation, 1 x 1.5, 3 x 0.7, any other x 1 (0x0027e6d8). |
|
tagging |
int | Byte +0x09: the tagging game's tuning row, 1-3 (0 as 1, above 3 as 3; 0x002739d8). |
|
lock_pick |
int | Byte +0x0a: the lock-pick dial's difficulty plus 1 (0x0022d790). |
|
stereo_turns |
int | Byte +0x0b: the stereo theft's turns per stage, 1 for 0-1, else 3 x (n - 1) (0x0022dd08). |
|
mugging |
int | Byte +0x0c: picks the mugging stick game's times, 2, 3 or any other (0x00284ca0). |
|
v0d |
int | Byte +0x0d: stored, never read. |
|
power_class |
int | The power class the same Warriors get as a player. | |
types |
list | Character types that get this class as a player. | |
source |
str | yes | Where the entry comes from: a script and binding, an address, a chunk. |
evidence |
str | yes | How we know: confirmed-code, confirmed-runtime, inferred or speculative (evidence levels). |
notes |
str | yes | Our own short notes. |