Skip to content

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.