Skip to content

Statistics

How a mission is scored. The game counts events per player in six categories (StatAdd(human, group, index, n) from scripts; the code adds the same way): each event's count times its points (CfgSetStatValue(group, index, points)) makes the category's score, shown as a percentage of the category's maximum (CfgSetStatTypeMax, which global.lua sets per level from PointsMatrix). Harmony counts against the player: its score is the maximum minus the points (Inventory, unlockables and statistics).

What is complete

All six categories, all 45 event slots and every level row of PointsMatrix are listed. Each event's meaning is read from the code that counts it (confirmed (code), one inferred); six slots have no engine caller. How global.lua turns a level's mission and bonus values into maxima is not traced.

75 entries. Data: research/references/statistics.yaml.

category

6 entries.

Id Group Category Max
mission 0 mission 10000
bonus 1 bonus
style 2 style 2000
combat 3 combat 5000
crime 4 crime 3000
harmony 5 harmony 4000

event

45 entries.

Id Group Category Index What Points Also set by Counted by scripts
0-0 0 mission 0 No engine caller found 1000 level99.lua
0-1 0 mission 1 A player knocks out an enemy gang member of category 13 1000
0-2 0 mission 2 No engine caller found 500
1-0 1 bonus 0 No engine caller found 100
1-1 1 bonus 1 No engine caller found 250
1-2 1 bonus 2 No engine caller found 500
1-3 1 bonus 3 A flawless break-in or a spray tag finished cleanly 1000
2-0 2 style 0 A counter (tackle, grab or block counter) 75
2-1 2 style 1 A hat picked up for the first time (hat byte +0x10b = 1) 200 level11_chapter6.lua
2-2 2 style 2 The same, hat byte +0x10b = 2 150
2-3 2 style 3 A thrown human damages a car or breaks an object; a knife throw adds 5 60
2-4 2 style 4 No engine caller found 150
2-5 2 style 5 A thrown human falls far (anims 422, 425, 428; inferred) 150
2-6 2 style 6 A tandem attack 100
2-7 2 style 7 A thrown human is knocked out by a moving vehicle 150
2-8 2 style 8 A thrown human smashes a glass pane 100
2-9 2 style 9 A wall throw 150
2-10 2 style 10 A stealth kill 100
2-11 2 style 11 A bottle smashed on someone 75
2-12 2 style 12 A grabbed human handcuffed 30
3-0 3 combat 0 A running charge or dive that lands 6
3-1 3 combat 1 A cross strike, a grounded or mounting strike, a rage or special attack 4
3-2 3 combat 2 A square strike, a grab or mount combo strike, an object throw 1
3-3 3 combat 3 A power strike in a grab or mount, a weapon finisher 7
3-4 3 combat 4 A grab or mount reversal 20
3-5 3 combat 5 A snap attack 3
3-6 3 combat 6 A throw, or a thrown human hitting someone; a molotov hit 5
3-7 3 combat 7 A player knocks out an enemy gang member 5
4-0 4 crime 0 The first assault on a civilian, bum or dealer 50
4-1 4 crime 1 A store break-in (once per store) 300
4-2 4 crime 2 A civilian, bum or dealer knocked out 5
4-3 4 crime 3 The first assault on a cop 25
4-4 4 crime 4 A cop knocked out 250
4-5 4 crime 5 A civilian, bum or dealer mugged 100
4-6 4 crime 6 A cop mugged 300
4-7 4 crime 7 A gang member mugged 200
4-8 4 crime 8 An owned item picked up (shoplifting) 100
4-9 4 crime 9 A breakable object broken 5
4-10 4 crime 10 A glass pane smashed 50
4-11 4 crime 11 Car parts newly damaged 10
5-0 5 harmony 0 An AI Warrior handcuffed 100
5-1 5 harmony 1 Every 2 s, each AI Warrior still cuffed 5
5-2 5 harmony 2 An AI Warrior knocked out 200
5-3 5 harmony 3 Every 2 s, each AI Warrior still down 10
5-4 5 harmony 4 Scripts only (StatAdd(player, 5, 4, 1)) 50 global.lua, level11_chapter3.lua, level60.lua

level

24 entries.

Id Level Mission Bonus Style Combat Crime Harmony
level-0 0 10 0 5000 10000 5000 5000
level-2 2 11 3.5 2000 15000 2000 10000
level-3 3 9 0 5000 15000 2000 5000
level-5 5 15 4 10000 10000 2000 5000
level-9 9 10 0 10000 5000 5000 5000
level-11 11 13 7 10000 15000 5000 2000
level-14 14 6 5.5 10000 5000 10000 2000
level-20 20 18 3.5 10000 10000 5000 2000
level-31 31 17 1 10000 10000 2000 5000
level-34 34 6 3.5 2000 5000 10000 5000
level-51 51 20 6 10000 20000 2000 10000
level-52 52 9 3 10000 15000 2000 10000
level-54 54 10 0 2000 5000 2000 10000
level-55 55 5 0 2000 5000 2000 10000
level-80 80 5 0 2000 5000 2000 2000
level-81 81 5 0 5000 15000 2000 10000
level-82 82 11 0 5000 10000 10000 2000
level-83 83 10 0 5000 10000 5000 2000
level-84 84 6 0 10000 10000 2000 10000
level-86 86 10 0 5000 15000 2000 5000
level-87 87 8 0 2000 10000 5000 5000
level-92 92 7 2.5 5000 15000 10000 2000
level-93 93 11 0 5000 15000 10000 10000
level-99 99 6 0 2000 5000 2000 2000

Sources and evidence

Evidence levels used: confirmed-code.

  • config_preload2.lua, CfgSetStatValue and CfgSetStatTypeMax; global.lua, PointsMatrix

Fields

Field Type Hand-written Meaning
id str A category's name, <group>-<index> for an event, level-<n> for a level.
kind str category, event or level.
group int The category's number: StatAdd's group and CfgSetStatValue's table.
category str Mission, bonus, style, combat, crime or harmony.
index int The event's index in its category.
meaning str yes What the game counts there, in our words.
points int Points per event (CfgSetStatValue in config_preload2.lua).
max int The category's default maximum (CfgSetStatTypeMax in config_preload2.lua).
set_by list Other scripts that set the event's points.
added_by list Scripts that count the event with StatAdd.
level int A level's number in PointsMatrix.
mission float The level's mission value (PointsMatrix).
bonus float Its bonus value.
style int Its style maximum (Pts.STYLE_*).
combat int Its combat maximum (Pts.COMBAT_*).
crime int Its crime maximum (Pts.CRIME_*).
harmony int Its harmony maximum (Pts.HARM_*).
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.