Wardogs: Loot Containers

Loot containers are the world pickups placed by map markers (the Lootable world feature). A marker actor carries a tag that names a row of DT_LootableDataTable; the row says which item can appear there, with what chance, and how it respawns. This page lists all 52 rows of the table plus the 2 rows of the VIP Escort scenario table. The tables below are generated by _tools/loot_tables.py from the exported data (also written to loot-tables.json). Which markers exist on which map is on WorldFeatures and the PvE pages.

Sources and labels

Label Meaning
Data A value read from the exported table DT_LootableDataTable or DT_LootableDataTable_VIPEscort_01.
Native A rule read from the game code (static disassembly, round 59 evidence, section 4).
Derived Computed here: the chance per draw is the entry weight divided by the sum of the weights of the row.

1. How a container picks its item

  1. Which row. At match start the server reads the marker’s tags and keeps the one that matches a row name (Native). Rows with “Control zone only” set (Lootable.Tower, Lootable.AbandonedTower) wait for the control-zone state; every other row spawns at once (Native).
  2. Spawn roll. The row’s SpawnChance is turned into a roll of 1 in N with N = (200 / chance + 0.5) rounded down, then halved and rounded down. 100 always passes, 50 is 1 in 2, 25 is 1 in 4, 20 is 1 in 5 (Native). If the roll fails and the row can respawn, a timer of RespawnTime seconds starts and the roll repeats.
  3. Item draw. The weights of all entries are added up (leaving out the entry chosen last when “never repeats” is on), a random point in that sum is drawn, and the entry whose running total reaches it wins (Native). The chance per draw is therefore weight / sum (Derived). With “never repeats” on, the previous item is removed from the next draw, so the other entries become more likely right after it.
  4. Sub-items. The sub-items of the chosen entry (a magazine, a scope, ammunition, grenades) are spawned on the ground next to the main item, 40 to 180 cm away at a random angle (Native). Most sub-items have a 100% chance and always come with the main item; the few with a lower chance (for example the Bandage on some sniper rows, 25%) show it in brackets.
  5. Not read. bSpawnByPoints and InitialSpawnPoints have no reader in the component code that was traced; their meaning is not known. They are shown as exported.

2. All rows

“Spawns” is “at match start” when the row is spawned by default, else the delay in seconds before the first spawn. “Respawn” is the wait before the container refills after it was emptied or failed its roll.

| Row | Items | Spawn chance | Respawn | Spawns | Control zone only | |—|—|—|—|—|—| | Lootable.Test | 1 | 100% | 1 s | at match start | no | | Lootable.Tower | 5 | 50% | 300 s | after 0 s | yes | | Lootable.AbandonedTower | 4 | 50% | 300 s | after 0 s | yes | | Lootable.Bandage | 1 | 100% | no | at match start | no | | Lootable.Weapon | 1 | 100% | no | at match start | no | | Lootable.Helmet | 1 | 100% | no | at match start | no | | Lootable.Armor | 1 | 100% | no | at match start | no | | Lootable.Defib.Cheap | 1 | 100% | no | at match start | no | | Lootable.Sniper | 1 | 100% | no | at match start | no | | Lootable.SniperOnly.HighValue | 5 | 25% | 60 s | after 30 s | no | | Lootable.SniperOnly.MiddleValue | 13 | 25% | 20 s | at match start | no | | Lootable.SniperOnly.LowValue | 9 | 20% | 20 s | at match start | no | | Lootable.PreLobby | 4 | 100% | 180 s | at match start | no | | Lootable.AK74 | 1 | 100% | 1 s | at match start | no | | Lootable.AR15 | 1 | 100% | 1 s | at match start | no | | Lootable.KH2002 | 1 | 100% | 1 s | at match start | no | | Lootable.A91 | 1 | 100% | 1 s | at match start | no | | Lootable.TAR21 | 1 | 100% | 1 s | at match start | no | | Lootable.Vector | 1 | 100% | 1 s | at match start | no | | Lootable.SKS | 1 | 100% | 1 s | at match start | no | | Lootable.SV98 | 1 | 100% | 1 s | at match start | no | | Lootable.M249 | 1 | 100% | 1 s | at match start | no | | Lootable.Glock17 | 1 | 100% | 1 s | at match start | no | | Lootable.M500 | 1 | 100% | 1 s | at match start | no | | Lootable.MMGL | 1 | 100% | 1 s | at match start | no | | Lootable.CGM4 | 1 | 100% | 1 s | at match start | no | | Lootable.MP9 | 1 | 100% | 1 s | at match start | no | | Lootable.SVDM | 1 | 100% | 1 s | at match start | no | | Lootable.RFB | 1 | 100% | 1 s | at match start | no | | Lootable.Mosin | 1 | 100% | 1 s | at match start | no | | Lootable.MK22 | 1 | 100% | 1 s | at match start | no | | Lootable.PKM | 1 | 100% | 1 s | at match start | no | | Lootable.Judge | 1 | 100% | 1 s | at match start | no | | Lootable.MP43 | 1 | 100% | 1 s | at match start | no | | Lootable.RPG | 1 | 100% | 1 s | at match start | no | | Lootable.PP19 | 1 | 100% | 1 s | at match start | no | | Lootable.AX50 | 1 | 100% | 1 s | at match start | no | | Lootable.Verba | 1 | 100% | 1 s | at match start | no | | Lootable.M1911 | 1 | 100% | 1 s | at match start | no | | Lootable.Deagle | 1 | 100% | 1 s | at match start | no | | Lootable.MP5 | 1 | 100% | 1 s | at match start | no | | Lootable.Galil | 1 | 100% | 1 s | at match start | no | | Lootable.FAL | 1 | 100% | 1 s | at match start | no | | Lootable.Glock18 | 1 | 100% | 1 s | at match start | no | | Lootable.Bushmaster | 1 | 100% | 1 s | at match start | no | | Lootable.M14 | 1 | 100% | 1 s | at match start | no | | Lootable.Scout | 1 | 100% | 1 s | at match start | no | | Lootable.Evolys | 1 | 100% | 1 s | at match start | no | | Lootable.SigSpear | 1 | 100% | 1 s | at match start | no | | Lootable.Bow | 1 | 100% | 1 s | at match start | no | | Lootable.M4 | 1 | 100% | no | at match start | no | | Lootable.Bag | 1 | 100% | no | at match start | no |

3. Rows with several possible items

Lootable.Tower

Spawn chance 50%, respawn 300 s, never repeats the previous item: yes. Weight sum 4.1.

Item Amount Weight Chance per draw Sub-items (always with it unless a chance is shown)
SV98 1 0.8 19.51% 6-10x Scope MRAD x1; SV98 10 RND Magazine x1; SV98 10 RND Magazine x1
M249 SAW 1 1 24.39% M249 100 RND Fabric Magazine x1; M249 Bipod x1; Holographic Sight x1
Medical Bag 1 0.8 19.51% Defibrillator x1; Battery x1; Battery x1; Adrenaline Pen x3; M18 Smoke Grenade: White x1
M500 1 1 24.39% 12g Rifled Slug x30; C4 Charge x3; Remote Detonator x1; M67 Frag Grenade x2; Claymore x1
Heavy Drill 1 0.5 12.2% High Capacity Battery x1; Fuel Can x1; MP5 x1; MP5 30 RND Magazine x1; MP5 30 RND Magazine x1

Lootable.AbandonedTower

Spawn chance 50%, respawn 300 s, never repeats the previous item: yes. Weight sum 4.

Item Amount Weight Chance per draw Sub-items (always with it unless a chance is shown)
Bandage 3 1 25% M67 Frag Grenade x2; Compact T-2 Red Dot x1
Spitfire 3X 1 1 25% RK6 Tactical Foregrip x1
Individual First Aid Kit 2 1 25% Adrenaline Pen x3; Kobra Reflex x1
Bandage 5 1 25% Field Resuscitator x2; M18 Smoke Grenade: White x2

Lootable.SniperOnly.HighValue

Spawn chance 25%, respawn 60 s, never repeats the previous item: yes. Weight sum 4.5.

Item Amount Weight Chance per draw Sub-items (always with it unless a chance is shown)
Mosin Nagant 1 1 22.22% Spectr 4x x1; 7.62x54mm Standard (FMJ) x10; 7.62x54mm Standard (FMJ) x10
SV98 1 1 22.22% 4x Combat Prism Scope with Reflex x1; SV98 10 RND Magazine x1; SV98 10 RND Magazine x1; Bandage x1 (25%)
MK22 1 1 22.22% 6x Marksman Scope + Reflex x1; MK22 10 RND Magazine x1; MK22 10 RND Magazine x1
AMR 50 1 1 22.22% 3x Tactical Prism Scope x1; AMR 50 5 RND Magazine x1; AMR 50 5 RND Magazine x1; Bandage x1 (25%)
Ghillie Body Suit 1 0.5 11.11% Ghillie Headwear x1; Infrared Range Finder x1; Bandage x1 (25%)

Lootable.SniperOnly.MiddleValue

Spawn chance 25%, respawn 20 s, never repeats the previous item: yes. Weight sum 9.05.

Item Amount Weight Chance per draw Sub-items (always with it unless a chance is shown)
Mosin Nagant 1 0.25 2.76% Spectr 4x x1; 7.62x54mm Standard (FMJ) x10; 7.62x54mm Standard (FMJ) x10
SV98 1 0.25 2.76% 4x Combat Prism Scope with Reflex x1; SV98 10 RND Magazine x1; SV98 10 RND Magazine x1
MK22 1 0.25 2.76% 6x Marksman Scope + Reflex x1; MK22 10 RND Magazine x1; MK22 10 RND Magazine x1
AMR 50 1 0.25 2.76% 3x Tactical Prism Scope x1; AMR 50 5 RND Magazine x1; AMR 50 5 RND Magazine x1
Ghillie Body Suit 1 0.05 0.55% Ghillie Headwear x1; Infrared Range Finder x1
6-10x Scope MOA 1 1 11.05% Mosin Nagant x1 (25%)
6-10x Scope MRAD 1 1 11.05% Range Finder x1 (50%); Constrictor Brake x1 (50%); Bandage x1
6-10x Scope MOA 1 1 11.05% Range Finder x1 (50%)
6x Marksman Scope + Reflex 1 1 11.05% Deagle x1 (50%)
6x Precision Rifle Scope 1 1 11.05% Mosin Nagant x1 (50%)
6x Precision Rifle Scope 1 1 11.05% Slicktap Brake x1 (50%); SV98 Bipod x1 (25%); Mosin Nagant x1 (25%)
3x-6x LPVO Short Dot 1 1 11.05% Constrictor Brake x1 (50%); Pro Tilt Bipod x1 (25%); Range Finder x1 (50%)
Frontier 2.5x-10x Precision Scope 1 1 11.05% Pro Tilt Bipod x1 (25%); Individual First Aid Kit x1

Lootable.SniperOnly.LowValue

Spawn chance 20%, respawn 20 s, never repeats the previous item: yes. Weight sum 4.25.

Item Amount Weight Chance per draw Sub-items (always with it unless a chance is shown)
Mosin Nagant 1 0.25 5.88% Spectr 4x x1; 7.62x54mm Standard (FMJ) x10; 7.62x54mm Standard (FMJ) x10
6-10x Scope MOA 1 0.5 11.76% AMR 50 5 RND Magazine x1 (50%); Deagle x1 (25%)
6-10x Scope MRAD 1 0.5 11.76% Range Finder x1 (50%); Constrictor Brake x1 (50%); Bandage x1; SV98 10 RND Magazine x1 (50%)
6-10x Scope MOA 1 0.5 11.76% Range Finder x1 (50%); SV98 x1 (50%)
6x Marksman Scope + Reflex 1 0.5 11.76% Deagle x1 (50%); Bandage x1; SV98 10 RND Magazine x1 (50%)
6x Precision Rifle Scope 1 0.5 11.76% GGX 17 x1 (50%)
6x Precision Rifle Scope 1 0.5 11.76% Slicktap Brake x1 (50%); SV98 Bipod x1 (25%); MK22 x1 (25%)
3x-6x LPVO Short Dot 1 0.5 11.76% Pro Tilt Bipod x1 (25%); Range Finder x1 (50%); AMR 50 5 RND Magazine x1 (50%)
Frontier 2.5x-10x Precision Scope 1 0.5 11.76% Pro Tilt Bipod x1 (25%); Individual First Aid Kit x1; AMR 50 x1 (25%)

Lootable.PreLobby

Spawn chance 100%, respawn 180 s, never repeats the previous item: yes. Weight sum 3.1.

| Item | Amount | Weight | Chance per draw | Sub-items (always with it unless a chance is shown) | |—|—|—|—|—| | GGX 17 | 1 | 1 | 32.26% | none | | Judge | 1 | 0.8 | 25.81% | none | | M1911 | 1 | 0.8 | 25.81% | none | | GGX 18 | 1 | 0.5 | 16.13% | none |

4. Single-item rows

Each of these rows always spawns the one listed item (weight 1, spawn chance 100%) unless a different value shows in the overview above.

| Row | Item | Amount | Sub-items | |—|—|—|—| | Lootable.Test | SV98 | 1 | 6-10x Scope MRAD x1; SV98 10 RND Magazine x1; SV98 10 RND Magazine x1 | | Lootable.Bandage | Bandage | 1 | none | | Lootable.Weapon | AK74 | 1 | none | | Lootable.Helmet | Level 1 Helmet | 1 | none | | Lootable.Armor | Level 1 Armor | 1 | none | | Lootable.Defib.Cheap | Cheap Defibrillator | 1 | none | | Lootable.Sniper | Mosin Nagant | 1 | Range Finder x1 | | Lootable.AK74 | AK74 | 1 | none | | Lootable.AR15 | M4 | 1 | none | | Lootable.KH2002 | KH-2002 | 1 | none | | Lootable.A91 | A-91 | 1 | none | | Lootable.TAR21 | T-21 | 1 | none | | Lootable.Vector | Super-45 | 1 | none | | Lootable.SKS | SKS | 1 | none | | Lootable.SV98 | SV98 | 1 | none | | Lootable.M249 | M249 SAW | 1 | none | | Lootable.Glock17 | GGX 17 | 1 | none | | Lootable.M500 | M500 | 1 | none | | Lootable.MMGL | MGL-40 | 1 | none | | Lootable.CGM4 | MAAWS | 1 | none | | Lootable.MP9 | AMP-9 | 1 | none | | Lootable.SVDM | SVD | 1 | none | | Lootable.RFB | BMR-308 | 1 | none | | Lootable.Mosin | Mosin Nagant | 1 | none | | Lootable.MK22 | MK22 | 1 | none | | Lootable.PKM | Alternative barrel 3 | 1 | none | | Lootable.Judge | Judge | 1 | none | | Lootable.MP43 | MP43 | 1 | none | | Lootable.RPG | RPG-7 | 1 | none | | Lootable.PP19 | Submachine Gun (WEPN_023, row PP19) | 1 | none | | Lootable.AX50 | AMR 50 | 1 | none | | Lootable.Verba | 9K333 Verba | 1 | none | | Lootable.M1911 | M1911 | 1 | none | | Lootable.Deagle | Deagle | 1 | none | | Lootable.MP5 | MP5 | 1 | none | | Lootable.Galil | Galil | 1 | none | | Lootable.FAL | FAL | 1 | none | | Lootable.Glock18 | GGX 18 | 1 | none | | Lootable.Bushmaster | Bushmaster M17S | 1 | none | | Lootable.M14 | M14 | 1 | none | | Lootable.Scout | Scout Rifle TD | 1 | none | | Lootable.Evolys | Evo-3 Ultra | 1 | none | | Lootable.SigSpear | TCX-SPR | 1 | none | | Lootable.Bow | Compound Bow | 1 | Broadhead Arrow x10 | | Lootable.M4 | M4 | 1 | none | | Lootable.Bag | Halftrack Backpack | 1 | none |

5. VIP Escort rows

DT_LootableDataTable_VIPEscort_01 belongs to the VIP Escort scenario. The cooked VIP Escort cells hold no markers with these row names, so the positions are not in the data held.

| Row | Item | Amount | Spawn chance | Respawn | Sub-items | |—|—|—|—|—|—| | Lootable.VIPEscort01.Fuelcan100 | Fuel Can | 1 | 100% | none | none | | Lootable.VIPEscort01.AK | SV98 | 1 | 100% | 10 s | SV98 10 RND Magazine x1 |

Rerun

python -I _tools/loot_tables.py          # rewrite assets/data/loot-tables.json and the blocks above
python -I _tools/loot_tables.py --check  # exit 1 if either is stale