GamingDiver / WoWS Legends Data Lab / Ship Data Object Codex

Ship Data Object Codex

A cross-catalog map of every in-game data entity: each state[i] slot, what we know it means (or that we don't yet), and a live example value. Pick any ship to swap the example column. Generated 2026-07-06.

showing Bismarck
What this is. Each ship is described by a tree of typed objects (a Ship that references a Hull, an Artillery that references ArtilleryGuns and their Ammo, and so on). Every object is a flat list of state[i] slots whose meaning isn't labeled in the data, so we recover it by correlating values across the whole catalog and checking them against the in-game UI. The Example value column shows the picked ship's value for each slot; greyed values are catalog constants or references that are the same on every ship.
mapped semantics confirmed, read by the extractor constant same value catalog-wide (a default) visual particle / asset path, no gameplay effect sub-entity a reference to another object needs ID varies across ships, meaning not yet pinned

Coverage at a glance

Across all classes: 272 of 1298 slots mapped (21%); 223 still need identifying.

Entity classSlotsMappedConstant VisualSub-entityNeed ID
Ship421410099
GameParamData330000
ShipAbilities440000
ShipUpgradeInfo770000
Ability610014
AbilitySlot200002
SectionCollection100010
Hull9126304625
HitLocation29614117
HitLocationPowderMagazine31522103
HitLocationLandingStrip30025113
Artillery23914000
ArtilleryGun4818180210
Ammo(AP)592721803
Ammo(HE)5927173012
Ammo(CS)5927201002
ATBA19414001
ATBAGun33139029
Torpedoes200011
Torpedo4914167012
AirDefense935001
AirDefenseAura5419121706
Radars201010
Engine15130020
AirArmament750002
AirSupport1305017
FlightControl1006031
AircraftType100001
DiveBomber2776172171963
Plane2745207171926
Catapult530002
ModelWithGunNode401003
Cap201001
TorpedoTube28137017
TOTAL1298272 64786 70223

Ship & top-level

Ship 42 slots · 14 mapped (33%) · 10 constant · 0 visual · 9 sub-entity · 9 need ID example: Ship - PGSB108_Bismarck.state[0]
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entityconst = {'_class': 'Placeholder', '_repr': '<ext…
1reference to another entitysub-entity→ sub-entity604 distinct
2reference to another entitysub-entity→ sub-entityconst = {'_class': 'CombatCamera', '_repr': '<ex…
3reference to another entitysub-entity→ sub-entity142 distinct
4reference to another entitysub-entity→ sub-entityconst = {'_class': 'SectionCollection', '_repr':…
5ShipAbilities (consumable slots container)mapped→ sub-entity604 distinct
6ShipUpgradeInfo (module / upgrade graph)mapped→ sub-entity604 distinct
7Destroyer-class physics flag. 0.0 on every non-DD ship (BB / CL / CA / CV / BC); 0.10 on every DD subclass (destroyer / gunboatdestroyer / torpedodestroyer / universaldestroyer). PERFECT class correlation. Likely a DD-specific physics tweak (torpedo-protection floor, water-spray damping, or similar).mapped0[0 – 0.1], med 0 · 2 distinct · tracks caliber (r=0.57) · tracks class (r=1.00) · tracks nation (r=0.98)
8game-logic constantconstantconst = None
9battle_tiers dict (PVP/ARCADE/COOPERATIVE pair (matchmaker_top, matchmaker_bottom))mapped→ sub-entity23 distinct
10needs identifyingneeds IDFalse2 distinct
11nation_hint (e.g. 'usastartbb')mappedgertankbb55 distinct · tracks nation (r=1.00)
12class_key (battleship/cruiser/destroyer/aircarrier)mappedbattleship10 distinct · tracks class (r=0.92) · tracks nation (r=0.89)
13game-logic constantconstantTrueconst = True
14Airstrike / air-support flag. Empty string '' on 1248 ships; 'airSupportFarStates' on exactly 4 Japanese hybrid-BB ships: Aki, Dewa, Ise, Suwo. These are the IJN BB-CV hybrids with airstrike consumables. VERIFIED 2026-05-30.mapped2 distinct · tracks caliber (r=0.71) · tracks class (r=0.92) · tracks nation (r=1.00)
15needs identifyingneeds ID1[0.4 – 1], med 1 · 3 distinct · tracks caliber (r=0.71) · tracks class (r=0.92) · tracks nation (r=0.96)
16game-logic constantconstantconst = None
17reference to another entitysub-entity→ sub-entityconst = {}
18needs identifyingneeds ID0.8[0.28 – 1], med 0.6 · 26 distinct
19needs identifyingneeds IDupgradeable9 distinct
20reference to another entitysub-entity→ sub-entityconst = {}
21isLegendary flag. True on every Tier 9 (Legendary) ship - Bourgogne, C-Colombo, Castilla, Conqueror, Daring, Des-Moines, Gdansk, Gearing, Gouden-Leeuw, Grosser-Kurfurst, Hakuryu, Halland, Henri-IV, Jinan, Khabarovsk, Kleber, Louisiana, M-Richthofen, Midway, etc. False on every tier 1-8 ship. PERFECT tier-9 correlation. VERIFIED 2026-05-30.mappedFalse2 distinct
22game-logic constantconstantTrueconst = True
23needs identifyingneeds IDFalse2 distinct
24tier (1-7 in Legends)mapped7[1 – 9], med 6 · 9 distinct
25level cap / progression slot count (typically 8)mapped8[4 – 8], med 8 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=1.00) · tracks nation (r=0.98)
26needs identifyingneeds ID1.9[0.45 – 1.9], med 1.3 · 19 distinct
27needs identifyingneeds ID40 distinct · tracks class (r=0.69) · tracks nation (r=0.98)
28Default-True flag. True on every ship in the catalog EXCEPT Kirisame (Japanese DD premium). Probably an availability / build-pipeline marker; the single False is a legacy or test-only entry.mappedTrue2 distinct · tracks caliber (r=0.86) · tracks class (r=0.92) · tracks nation (r=0.98)
29game-logic constantconstantdefaultconst = default
30reference to another entitysub-entity→ sub-entityconst = {}
31game-logic constantconstantconst =
32reference to another entitysub-entity→ sub-entityconst = {}
33permanent_exterior_ids (list of camo / permo IDs)mappedPGES600_BISMARCK_MEGATRON, PGES308_Bismarck_Ve…255 distinct
34Tier-related progression count. 2 / 3 / 4 distribution: tier 1-3 mostly 2, tier 4-8 mix of 2 and 3, tier 9 (Legendary) ALWAYS 4. The 4-value is exclusive to Legendaries. Possibly module-slot count or progression-tier marker.mapped2[2 – 4], med 3 · 3 distinct
35game-logic constantconstantconst =
36game-logic constantconstantTrueconst = True
37game-logic constantconstantFalseconst = False
38needs identifyingneeds ID9 distinct · tracks class (r=0.54) · tracks nation (r=0.96)
39game-logic constantconstantconst = []
40needs identifyingneeds ID5171[1000 – 9018], med 3932 · 21 distinct
41modules dict (Hull / Artillery / ATBA / AirDefense / Engine / FireControl / etc.)mapped→ sub-entity600 distinct
GameParamData 3 slots · 3 mapped (100%) · 0 constant · 0 visual · 0 sub-entity · 0 need ID example: PGSB108_Bismarck (top-level GameParamData)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0the wrapped entity (Ship at the top level; ArtilleryGun / ATBAGun / etc. inside module mount dicts)mapped→ sub-entity24049 distinct
1GameParamMetaData - numeric id, ship/gun code, and full WG-ID string. At the top level the WG-ID (e.g. PASB006_New_York_1934) is the primary key used in the GamingDiver data exportmapped→ sub-entity24049 distinct
2metadata dict (type / nation / class info)mapped→ sub-entity600 distinct
ShipAbilities 4 slots · 4 mapped (100%) · 0 constant · 0 visual · 0 sub-entity · 0 need ID example: ShipAbilities (state[5]) - consumable slots container
#Field / what we knowStatus Bismarck valueCatalog range · notes
0AbilitySlot[0] (typically Damage Control Party slot)mapped→ sub-entity604 distinct
1AbilitySlot[1]mapped→ sub-entity601 distinct
2AbilitySlot[2]mapped→ sub-entity594 distinct
3AbilitySlot[3]mapped→ sub-entity530 distinct
ShipUpgradeInfo 7 slots · 7 mapped (100%) · 0 constant · 0 visual · 0 sub-entity · 0 need ID example: ShipUpgradeInfo (state[6])
#Field / what we knowStatus Bismarck valueCatalog range · notes
0costCR - credit cost / pricemapped18000000[0 – 4.875e+07], med 13000 · 13 distinct
1costGold - doubloon costmapped0[0 – 25000], med 0 · 9 distinct · tracks class (r=0.69) · tracks nation (r=0.98)
2costSaleGold - sale doubloon costmapped0const = 0
3costXP - research XP (xp_to_elite)mapped210000[0 – 750000], med 0 · 17 distinct
4lockedConfig - list of locked upgrade configsmappedconst = []
5valuemapped1const = 1
6components dict (per-upgrade-slot ShipUpgradeInfo rows)mapped→ sub-entity604 distinct
Ability 6 slots · 1 mapped (17%) · 0 constant · 0 visual · 1 sub-entity · 4 need ID example: PCY001_CrashCrew (Ability)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds IDFalse2 distinct · tracks caliber (r=0.86) · tracks class (r=0.92) · tracks nation (r=0.98)
1reference to another entitysub-entity→ sub-entityconst = {}
2needs identifyingneeds ID-1[-1 – 22500], med -1 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.92) · tracks nation (r=0.98)
3needs identifyingneeds ID-1[-1 – 15], med -1 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.92) · tracks nation (r=0.98)
4needs identifyingneeds IDTrue2 distinct · tracks caliber (r=0.86) · tracks class (r=0.92) · tracks nation (r=0.98)
5variants dict {variant_id : variant_object}. The ability's per-upgrade-level variant table. Read by the spec reader:366 (ability_variant_object).mapped→ sub-entity18 distinct
AbilitySlot 2 slots · 0 mapped (0%) · 0 constant · 0 visual · 0 sub-entity · 2 need ID example: ShipAbilities.state[0] - AbilitySlot
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID395 distinct
1needs identifyingneeds ID0[0 – 3], med 2 · 4 distinct
SectionCollection 1 slots · 0 mapped (0%) · 0 constant · 0 visual · 1 sub-entity · 0 need ID example: Module AB_Directors (SectionCollection)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entity737 distinct

Survivability (hull, hit zones, magazine)

Hull 91 slots · 26 mapped (29%) · 30 constant · 4 visual · 6 sub-entity · 25 need ID example: Module B_Hull (Hull)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0armor dict {raw_key=(model_index<<16)|material_id : thickness_mm}mapped→ sub-entity533 distinct
1game-logic constantconstant-1, -1const = [-1, -1]
2game-logic constantconstant-1, -1const = [-1, -1]
3game-logic constantconstant-1, -1const = [-1, -1]
4game-logic constantconstant-1, -1const = [-1, -1]
5Hull-physics class (close to historical propeller-shaft count). DDs = 2.0 (or 3.0 for late-war designs), CLs/CAs = 3.0 (or 4.0 for a few), BBs = 3.0 (34 hulls, mostly older designs) or 4.0 (127 hulls), CVs = 3.0 or 4.0. Strongly class-correlated; likely a manoeuvring / hydrodynamics tier rather than literal shaft count.mapped4[2 – 4], med 3 · 3 distinct · tracks nation (r=0.75)
6reference to another entitysub-entity→ sub-entity109 distinct · tracks class (r=0.54)
7needs identifyingneeds IDparticles/NF_BB_boiler_explosion_post_death.xm…5 distinct
8game-logic constantconstant200000const = 200000.0
9fire-protection coefficient triplets (1-x[0][0] => fire resistance %)mapped→ sub-entity37 distinct
10game-logic constantconstant1const = 1.0
11game-logic constantconstant1const = 1.0
12game-logic constantconstantconst =
13reference to another entitysub-entity→ sub-entityconst = {'scout': '', 'fighter': ''}
14reference to another entitysub-entity→ sub-entity65 distinct
15needs identifyingneeds IDparticles/NF_BB_seething_bubbles_post_death.xm…4 distinct
16needs identifyingneeds IDparticles/NF_BB_death_explosion_of_art_cellar.…5 distinct
17needs identifyingneeds IDparticles/NF_BB_fuming_at_fault_post_death.xml5 distinct
18needs identifyingneeds IDparticles/NF_BB_fire_death.xml5 distinct
19needs identifyingneeds IDparticles/NF_XL_foam_post_death.xml5 distinct
20needs identifyingneeds IDparticles/NF_BB_water_fountains_post_death.xml4 distinct
21needs identifyingneeds IDparticles/NF_BB_fuming_at_flooding_post_death.…4 distinct
22death_hardpoints listmappedHP_Ship_death_1, HP_Ship_death_2, HP_Ship_deat…const = ['HP_Ship_death_1', 'HP_Ship_death_2', '…
23asset / particle pathvisualparticles/NF_AA_death_catapult_ships.xmlconst = particles/NF_AA_death_catapult_ships.xml
24needs identifyingneeds IDparticles/NF_BB_fuming_post_fire.xml4 distinct
25needs identifyingneeds IDparticles/NF_BB_death_bomb.xml5 distinct
26asset / particle pathvisualparticles/NF_death_torpedo.xmlconst = particles/NF_death_torpedo.xml
27Decal / fragMarker dict {'frag': ..., 'unic': ..., 'unknown': ...}. Visual-only - kill-counter and unique-decal definitions per hull.mapped→ sub-entity4 distinct · tracks nation (r=0.75)
28needs identifyingneeds ID0.5[0.5 – 3.22], med 0.5 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.92) · tracks nation (r=0.98)
29Camo render type. 'camo_color_tint' (1762 hulls) or 'camo_permanent_flag' (40 hulls). Visual-only.mappedcamo_color_tint2 distinct · tracks class (r=0.69) · tracks nation (r=0.98)
30needs identifyingneeds ID0[-0.23 – 0.11], med 0 · 108 distinct
31draft (m) - PC-aligned 2026-05mapped11[2.3 – 11], med 11 · 22 distinct · tracks nation (r=0.80)
32asset / particle pathvisualparticles/vehicles/Albany_fire_01.xmlconst = particles/vehicles/Albany_fire_01.xml
33needs identifyingneeds IDparticles/vehicles/Battleship_death.xml4 distinct
34asset / particle pathvisualparticles/simple_death.xmlconst = particles/simple_death.xml
35needs identifyingneeds IDparticles/vehicles/BB_post_death.xml5 distinct
36reference to another entitysub-entity→ sub-entity54 distinct
37needs identifyingneeds IDparticles/vehicles/BB_RunSmoke.xml6 distinct
38enginePower (hp, hull-level) - PC-aligned 2026-05mapped163000[5500 – 305000], med 80000 · 196 distinct
39Camouflage mesh asset (e.g. 'content/gameplay/common/misc/CM500/CM500.model'). Visual-only.mappedcontent/gameplay/common/misc/CM500/CM500.model2 distinct · tracks nation (r=0.82)
40torpedo-protection coefficient list (1-x[0] is post-protection damage coeff; round((1-x[0]/0.333)*100) => torp reduction %)mapped0.25999999046325684, 0.5, 40.075 distinct
41game-logic constantconstant0.05const = 0.05000000074505806
42max hit pointsmapped69200[6800 – 105800], med 32200 · 479 distinct
43Ship mass in KILOGRAMS (= displacement tonnes * 1000). Used by the in-game physics engine. Kremlin 82,149,000 kg, Yamato 72,800,000 kg, Bismarck 49,406,000 kg, Tachibana 830,000 kg, Smith 900,000 kg. Always exactly state[76]*1000, EXCEPT for Iowa (state[43]=57,540,000 = full-load, state[76]=50,000 = standard) - i.e. state[43] is the physics mass and state[76] is the displayed displacement, usually the same number in different units. VERIFIED 2026-05-30.mapped49406000[830000 – 8.2149e+07], med 1.185e+07 · 473 distinct
44game-logic constantconstant30const = 30.0
45max speed (knots)mapped31[17 – 60], med 33 · 86 distinct
46hull model pathmappedcontent/gameplay/germany/ship/battleship/GSB00…620 distinct
47needs identifyingneeds IDgermany25 distinct · tracks nation (r=0.91)
48game-logic constantconstant0const = 0
49game-logic constantconstant1const = 1.0
50game-logic constantconstantFalseconst = False
51game-logic constantconstantFalseconst = False
52game-logic constantconstant16const = 16.0
53game-logic constantconstant1const = 1.0
54game-logic constantconstant0const = 0.0
55game-logic constantconstant0const = 0.0
56needs identifyingneeds ID74[0.5 – 123], med 18 · 157 distinct
57needs identifyingneeds ID83000000[7.115e+06 – 1.3e+08], med 4.5e+07 · 205 distinct
58rudder shift time (seconds)mapped20.86[2.44 – 35.75], med 11.84 · 578 distinct
59needs identifyingneeds ID2[2 – 20], med 2 · 10 distinct · tracks nation (r=0.78)
60needs identifyingneeds ID1[1 – 3], med 1 · 7 distinct · tracks nation (r=0.80)
61needs identifyingneeds ID2.2[2.2 – 20], med 2.2 · 9 distinct · tracks nation (r=0.78)
62needs identifyingneeds ID2.2[2 – 3], med 2.2 · 4 distinct · tracks nation (r=0.78)
63game-logic constantconstantFalseconst = False
64needs identifyingneeds ID1500000[16000 – 3.7e+06], med 325000 · 235 distinct
65reference to another entitysub-entity→ sub-entityconst = {'_list_len': 4, '_repr': '((4.0, 10.0),…
66reference to another entitysub-entity→ sub-entityconst = {'_list_len': 4, '_repr': '((45.0, 130.0…
67needs identifyingneeds IDPCXS000_Battleship10 distinct · tracks nation (r=0.55)
68(length_m, beam_m, height_m) tuplemapped260.0, 20.0, 37.0281 distinct
69game-logic constantconstant27const = 27.0
70game-logic constantconstantconst =
71game-logic constantconstant1const = 1.0
72needs identifyingneeds IDparticles/vehicles/WaterEffectsBismarck.xml365 distinct
73game-logic constantconstant3const = 3.0
74game-logic constantconstant4const = 4.0
75game-logic constantconstant0.2const = 0.20000000298023224
76Ship displacement in METRIC TONNES (= state[43] / 1000 for nearly every ship). The number the in-game stat panel displays. VERIFIED 2026-05-30.mapped49406[780 – 82149], med 11760 · 573 distinct
77game-logic constantconstant0.5const = 0.5
78turning circle radius (m)mapped850[300 – 1250], med 680 · 80 distinct
79game-logic constantconstant0const = 9.999999974752427e-07
80game-logic constantconstant0const = 9.999999974752427e-07
81guaranteed detection range (km) - fixed at 2.0 across every shipmapped2const = 2.0
82torpedo guaranteed detection range (km) - fixed at 3.0mapped3const = 3.0
83game-logic constantconstant0const = 9.999999974752427e-07
84gun-firing visibility BONUS (km, additive on top of base detect)mapped7.6[1e-06 – 10.16], med 3.04 · 52 distinct
85smoke-firing penalty (km)mapped14.12[0 – 16], med 5.68 · 391 distinct
86gun-firing visibility duration (s) - fixed at 20.0mapped20[0.0001 – 20], med 20 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=1.00) · tracks nation (r=0.98)
87surface detectability (km)mapped15.44[5.21 – 16.2], med 11.86 · 392 distinct
88air detectability (km)mapped12.35[2.53 – 13.04], med 7.16 · 374 distinct
89game-logic constantconstant0const = 9.999999974752427e-07
90hitlocations dict (turret/citadel/etc. collision/HP entries)mapped→ sub-entity871 distinct
HitLocation 29 slots · 6 mapped (21%) · 14 constant · 1 visual · 1 sub-entity · 7 need ID example: ↳ B_Hull.state[90]['SS'] - HitLocation
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID0[0 – 0.8], med 0 · 6 distinct
1Few-values: 10.0 (10588 zones, default), 30.0 (64), 40.0 (1736). Likely armor-thickness band or damage tier per zone.mapped10[10 – 40], med 10 · 3 distinct
2needs identifyingneeds ID5[5 – 40], med 5 · 4 distinct
3game-logic constantconstant0const = 0.0
4game-logic constantconstantconst =
5game-logic constantconstantFalseconst = False
6needs identifyingneeds ID0.0, 0.05 distinct
7game-logic constantconstant1.0, 0.0const = [1.0, 0.0]
8reference to another entitysub-entity→ sub-entityconst = {'_list_len': 3, '_repr': "((0.1, ''), (…
9game-logic constantconstant/, /const = ['/', '/']
10asset / particle pathvisualparticles/NF_BB_death_explosion_of_art_cellar.…const = particles/NF_BB_death_explosion_of_art_c…
11game-logic constantconstantFalseconst = False
12game-logic constantconstant0.0, 0.0const = [0.0, 0.0]
13game-logic constantconstant0.0, 0.0const = [0.0, 0.0]
14hlType - hit-zone class ('citadel_hitlocation', 'engine_hitlocation', 'casemate_hitlocation', 'turret_hitlocation', etc.). PC-aligned 2026-05. 7 distinct types in catalog.mappedsupersctructure_hitlocation7 distinct
15game-logic constantconstant0const = 0.0
16maxHP - hit-zone hit points. PC-aligned 2026-05. Range 10 (small turret) to 165500 (Yamato turret).mapped4700[10 – 165500], med 4800 · 490 distinct
17needs identifyingneeds ID0[0 – 1], med 0 · 2 distinct · tracks caliber (r=0.57) · tracks class (r=0.69) · tracks nation (r=0.85)
18needs identifyingneeds ID0[0 – 1], med 0 · 2 distinct · tracks caliber (r=0.57) · tracks class (r=0.69) · tracks nation (r=0.85)
19Parent classification (string|None). 6914 zones = 'Hull' (hull-bound zone); 5474 = None (standalone zone like turret/magazine).mappedHull2 distinct
20needs identifyingneeds ID0.5[0.1 – 0.75], med 0.5 · 10 distinct
21game-logic constantconstant0const = 0.0
22Collision-mesh ID list (e.g. ['CM_SB_cit_1']). Per-zone collision-volume references in the ship model.mappedCM_SB_ss_1_1, CM_SB_ss_1_2, CM_SB_ss_1_3, CM_S…320 distinct
23game-logic constantconstant0const = 0.0
24game-logic constantconstant0const = 0.0
25game-logic constantconstant1const = 1.0
26game-logic constantconstant1const = 1.0
27needs identifyingneeds ID3.76[0.02 – 27.23], med 1 · 692 distinct
28Damage-cap fraction per zone (PC field 'alphaDamageCutoff' candidate). Three values: 0.165 (16.5%, 8714 zones - default damage cap), 0.33 (33%, 546 zones), 0.5 (50%, smaller set). Higher value = bigger fraction of alphaDamage that can be inflicted on this zone per hit.mapped0.165[0.165 – 1], med 0.165 · 3 distinct
HitLocationPowderMagazine 31 slots · 5 mapped (16%) · 22 constant · 1 visual · 0 sub-entity · 3 need ID example: ↳ B_Hull.state[90]['Ammo_1'] - HitLocationPowderMagazine
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID0[0 – 0.8], med 0 · 5 distinct · tracks nation (r=0.50)
1game-logic constantconstant40const = 40.0
2game-logic constantconstant5const = 5.0
3game-logic constantconstant0const = 0.0
4game-logic constantconstantconst =
5game-logic constantconstantTrueconst = True
6game-logic constantconstant1const = 1.0
7game-logic constantconstant0.0, 0.0const = [0.0, 0.0]
8critProbHP - magazine critical-hit probability term keyed to HP.mapped1.0, 0.0const = [1.0, 0.0]
9damageEffects - refs to the visual/damage effects fired on a magazine hit.mapped→ sub-entityconst = {'_list_len': 3, '_repr': "((0.1, ''), (…
10game-logic constantconstant/, /const = ['/', '/']
11asset / particle pathvisualparticles/NF_BB_death_explosion_of_art_cellar.…const = particles/NF_BB_death_explosion_of_art_c…
12game-logic constantconstantFalseconst = False
13game-logic constantconstantconst = []
14hitDetonationMaxProbAtDamage - the MAX detonation chance, reached at full magazine damage. ~0.30 (the 30% ceiling) on every ship; pairs with [15] min.mapped0.10000000149011612, 1.0const = [0.10000000149011612, 1.0]
15hitDetonationMinProbAtDamage - the MIN detonation chance, at 0 magazine damage. ~0.01 (the 1% floor) on every ship; pairs with [14] max. The displayed '1-30% detonation' range is [15]..[14].mapped0.009999999776482582, 0.30000001192092896const = [0.009999999776482582, 0.300000011920928…
16game-logic constantconstantpowdermagazine_hitlocationconst = powdermagazine_hitlocation
17game-logic constantconstant0const = 0.0
18magazine max HP - the turret/magazine durability pool (separate from ship HP).mapped34600[2500 – 54200], med 15700 · 307 distinct
19game-logic constantconstant1const = 1.0
20game-logic constantconstant1const = 1.0
21game-logic constantconstantconst = None
22needs identifyingneeds ID0.5[0.5 – 0.75], med 0.5 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.89) · tracks nation (r=0.98)
23game-logic constantconstant0const = 0.0
24needs identifyingneeds IDCM_SB_cit_ammo1_1, CM_SB_cit_ammo1_271 distinct
25game-logic constantconstant0const = 0.0
26game-logic constantconstant0const = 0.0
27game-logic constantconstant1const = 1.0
28game-logic constantconstant1const = 1.0
29game-logic constantconstant1const = 1.0
30game-logic constantconstant1const = 1.0
HitLocationLandingStrip 30 slots · 0 mapped (0%) · 25 constant · 1 visual · 1 sub-entity · 3 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID[0 – 0.6], med 0 · 2 distinct · tracks caliber (r=0.67) · tracks class (r=0.50) · tracks nation (r=0.75)
1game-logic constantconstant10const = 10.0
2game-logic constantconstant5const = 5.0
3game-logic constantconstant0const = 0.0
4game-logic constantconstantconst =
5game-logic constantconstantFalseconst = False
6game-logic constantconstant1const = 1.0
7game-logic constantconstant0.0, 0.0const = [0.0, 0.0]
8game-logic constantconstant1.0, 0.0const = [1.0, 0.0]
9reference to another entitysub-entity→ sub-entityconst = {'_list_len': 3, '_repr': "((0.1, ''), (…
10game-logic constantconstant/, /const = ['/', '/']
11asset / particle pathvisualparticles/NF_BB_death_explosion_of_art_cellar.…const = particles/NF_BB_death_explosion_of_art_c…
12game-logic constantconstantFalseconst = False
13game-logic constantconstant0.0, 0.0const = [0.0, 0.0]
14game-logic constantconstant0.0, 0.0const = [0.0, 0.0]
15game-logic constantconstantlandingstrip_hitlocationconst = landingstrip_hitlocation
16game-logic constantconstant0const = 0.0
17needs identifyingneeds ID[15850 – 47350], med 26300 · 27 distinct
18game-logic constantconstant1const = 1.0
19game-logic constantconstant1const = 1.0
20game-logic constantconstantconst = None
21game-logic constantconstant0.5const = 0.5
22game-logic constantconstant0const = 0.0
23needs identifyingneeds ID8 distinct
24game-logic constantconstant0const = 0.0
25game-logic constantconstant0const = 0.0
26game-logic constantconstant1const = 1.0
27game-logic constantconstant1const = 1.0
28game-logic constantconstant1const = 1.0
29game-logic constantconstant1const = 1.0

Main battery

Artillery 23 slots · 9 mapped (39%) · 14 constant · 0 visual · 0 sub-entity · 0 need ID example: Module B1_Artillery (Artillery)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0shell-mag dict {'AP':9999,'HE':9999,'CS':9999} ammo capacitymapped→ sub-entityconst = {'CS': 9999, 'AP': 9999, 'HE': 9999}
1useReadyRack flag (bool). True only on the 9 Spanish ready-rack ships: Andalucia, Asturias, Baleares, Canarias, Castilla, Cataluna, Mendez-Nunez, Numancia, Victoria. The Spanish nation_hint is literally 'spareadyrackcr' (Spanish ready-rack cruiser). Companion to ArtilleryGun state[9] (reload-per-shell) and state[10] (shells-in-rack). VERIFIED 2026-05-30.mappedFalse2 distinct · tracks class (r=0.67) · tracks nation (r=0.98)
2maxDist - base firing range (m); the range the in-game 'max dispersion' stat is evaluated atmapped15771[7730 – 18180], med 13610 · 505 distinct
3UNKNOWN (166 on New York) - was misread as max horizontal dispersion; the real dispersion fields live on the ArtilleryGun. Needs new identification.mapped148[3 – 174], med 68 · 111 distinct
4UNKNOWN (450 on New York) - was misread as a vertical dispersion parameter. Needs new identification.mapped577[6 – 703], med 402 · 280 distinct
5game-logic constantconstantTrueconst = True
6sigma (shell grouping)mapped1.95[1.4 – 2.4], med 2 · 17 distinct
7taperDist - dispersion taper distance (m), 4000 on most hulls, 3500 on a few. Input to the WoWS dispersion formula.mapped4000[3000 – 5000], med 4000 · 5 distinct · tracks caliber (r=0.57) · tracks class (r=0.78) · tracks nation (r=0.84)
8game-logic constantconstantconst = []
9game-logic constantconstant1const = 1.0
10game-logic constantconstant1const = 1.0
11game-logic constantconstant1const = 1.0
12game-logic constantconstant10const = 10.0
13game-logic constantconstant2const = 2.0
14game-logic constantconstant1const = 1.0
15game-logic constantconstant10const = 10.0
16game-logic constantconstant5const = 5.0
17game-logic constantconstant1const = 1.0
18game-logic constantconstant0.1const = 0.10000000149011612
19game-logic constantconstant1const = 1.0
20per-target-class dispersion multipliers {AirCarrier:(...), Battleship:(...), Cruiser:(...), Destroyer:(...)}mapped→ sub-entityconst = {'AirCarrier': [6.0, 6.0, 6.0], 'Battles…
21game-logic constantconstant1const = 1.0
22gun mounts dict {HP_AGM_N : GameParamData wrapping ArtilleryGun}mapped→ sub-entity773 distinct
ArtilleryGun 48 slots · 18 mapped (38%) · 18 constant · 0 visual · 2 sub-entity · 10 need ID example: ↳ B1_Artillery.state[22]['HP_GGM_4'].state[0] - ArtilleryGun
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entity2124 distinct
1game-logic constantconstant4const = 4.0
2game-logic constantconstant3.7const = 3.700000047683716
3game-logic constantconstant3.5const = 3.5
4shell ID list (AP/HE/CS shell entity IDs)mappedPGPA102_380MM_HE_HE_L_4_6_BISMARCK, PGPA101_38…505 distinct
5deadZone candidate - per-turret superstructure-blocked firing arc (degrees). 0.0 on most mounts (no dead zone) plus per-ship specific values: 150 (64 mounts), 167 (454), 173 (156), 200 (182). The non-zero values represent turret azimuths the turret cannot rotate through (typically aiming into the ship's own superstructure). PC field name 'deadZone' from mackbot data_prep.py MAIN_KEYS.mapped0[0 – 200], med 0 · 5 distinct · tracks caliber (r=0.71) · tracks nation (r=0.66)
6needs identifyingneeds ID0[0 – 0.612], med 0 · 43 distinct · tracks caliber (r=0.71) · tracks nation (r=0.66)
7reference to another entitysub-entity→ sub-entity577 distinct
8barrelDiameter - main battery caliber (mm).mapped0.38[0.076 – 0.508], med 0.152 · 47 distinct
9Ready-rack reload time per shell (seconds). 1.0 sentinel on every non-Spanish mount (no ready rack); 1.5-4.0 on the 9 Spanish ready-rack ships (Castilla 2.5, Mendez-Nunez 1.5, Numancia 4.0, Victoria 3.0, etc.). The PC field is the 'Reload time for each shell in the ready rack' label. VERIFIED 2026-05-26 via the spec reader; the extractor only emits the ready_rack block when this slot > 1.4 and state[10] > 1.mapped1[1 – 4], med 1 · 6 distinct · tracks class (r=0.67) · tracks nation (r=0.98)
10Shells in the ready rack (int). 1 sentinel on every non-Spanish mount (no rack); 2 or 3 on the 9 Spanish ready-rack ships (matches per-ship main_battery.ready_rack.shells_in_rack in the existing extractor). Companion to state[9] and the Artillery[1] useReadyRack flag. VERIFIED 2026-05-26.mapped1[1 – 3], med 1 · 3 distinct · tracks class (r=0.67) · tracks nation (r=0.98)
11game-logic constantconstant0.3const = 0.30000001192092896
12game-logic constantconstantconst = None
13dead-mesh model pathmappedcontent/gameplay/germany/gun/main/GGM059_380mm…486 distinct
14needs identifyingneeds ID130 distinct
15delim - dispersion vertical-taper delimiter (fraction of max range). Input to the WoWS dispersion formula.mapped0.5[0.5 – 0.7], med 0.5 · 3 distinct · tracks caliber (r=0.57) · tracks class (r=0.78) · tracks nation (r=0.98)
16game-logic constantconstant250const = 250.0
17game-logic constantconstant50const = 50.0
18horizontal traverse arc (degrees)mapped-145.0, 145.0301 distinct
19idealDistance - dispersion reference distance (typically 1000). Input to the WoWS dispersion formula.mapped1000const = 1000.0
20idealRadius - horizontal dispersion coefficient (BB ~12, cruiser/DD ~8). VERIFIED 2026-05: drives the in-game dispersion formula, reproduced to within 0.1 m across 6 ships. The 'class-bound 8/10/12' value is just idealRadius scaling with ship class.mapped12[4 – 13], med 8 · 11 distinct · tracks nation (r=0.90)
21needs identifyingneeds IDparticles/guns/GK_Lens_Big.xml3 distinct
22game-logic constantconstant1.003const = 1.003000020980835
23game-logic constantconstant1.002const = 1.0019999742507935
24game-logic constantconstant1.001const = 1.0010000467300415
25minRadius - close-range horizontal dispersion floor (typically 2). Input to the WoWS dispersion formula.mapped2.2[0.5 – 2.8], med 1.1 · 12 distinct · tracks class (r=0.56) · tracks nation (r=0.86)
26needs identifyingneeds ID564 distinct
27needs identifyingneeds IDFalse2 distinct · tracks caliber (r=0.57) · tracks nation (r=0.90)
28turret model pathmappedcontent/gameplay/germany/gun/main/GGM059_380mm…486 distinct
29barrel countmapped2[1 – 4], med 2 · 4 distinct
30game-logic constantconstant1.001const = 1.0010000467300415
31game-logic constantconstant1.002const = 1.0019999742507935
32game-logic constantconstant1const = 1.0
33game-logic constantconstant0.1const = 0.10000000149011612
34needs identifyingneeds ID111 distinct · tracks nation (r=0.50)
35needs identifyingneeds ID5.0, 1.0133 distinct
36needs identifyingneeds IDparticles/guns/Purging_Big.xml3 distinct
37radiusOnDelim - vertical dispersion coefficient at the delim point.mapped0.5[0.4 – 0.6], med 0.5 · 4 distinct · tracks caliber (r=0.57) · tracks class (r=0.78) · tracks nation (r=0.96)
38radiusOnMax - vertical dispersion coefficient at max range (= the in-game vertical/horizontal ratio at max range).mapped0.6[0.575 – 0.95], med 0.6 · 6 distinct · tracks caliber (r=0.57) · tracks class (r=0.78) · tracks nation (r=0.96)
39radiusOnZero - vertical dispersion coefficient at close range.mapped0.2[0.2 – 0.25], med 0.2 · 3 distinct · tracks caliber (r=0.57) · tracks class (r=0.78) · tracks nation (r=0.96)
40game-logic constantconstant0.1const = 0.10000000149011612
41(stock_hull_dps, top_hull_dps) - turret traverse degrees/second. VERIFIED 2026-05; the in-game 'Turret traverse speed' uses [0] for stock hull, [1] for top hull. 180-degree turn time = 180 / value.mapped5.0, 6.0156 distinct
42reload time (s) - VERIFIED 2026-05 against in-game stat panels across 13 ships (Bismarck 26s, Yamato 30s, Iowa 30s, New York 34.3s, Atlanta 5s, Fletcher 3s, Shimakaze 6.5s, Des Moines 6s, etc.). 180-degree turn time = 180 / state[41][hull].mapped26[1.7 – 37], med 9 · 105 distinct
43needs identifyingneeds IDparticles/guns/Gk_DoubleShot_400.xml9 distinct
44game-logic constantconstantconst = None
45game-logic constantconstant0.0001const = 9.999999747378752e-05
46game-logic constantconstantconst = None
47needs identifyingneeds ID0.0, 30.0178 distinct
Ammo(AP) 59 slots · 27 mapped (46%) · 21 constant · 8 visual · 0 sub-entity · 3 need ID example: PGPA101_380MM_AP_APC_L_4_4_BISMARCK (Ammo)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0alphaDamage - maximum shell damagemapped11600[1000 – 19500], med 4100 · 124 distinct
1alphaPiercingCS - SAP shell penetration (mm). 0 on AP/HE shells. Verified 2026-05 in the spec reader across all 16 SAP-equipped ships: state[1]/caliber stays ~0.28 for Italian CL/DD SAP (135mm->38, 120mm->34.2) and ~0.25 for heavier Italian BB SAP (Ruggiero 457mm->114).mapped0const = 0.0
2alphaPiercingHE - HE penetration (mm); 0 for AP/SAP shellsmapped0const = 0.0
3ammoType - shell type ('AP' / 'HE' / 'CS')mappedAPconst = AP
4game-logic constantconstantFalseconst = False
5bulletAirDrag - ballistic drag coefficientmapped0.2763[0.2 – 0.5962], med 0.3297 · 165 distinct
6bulletAlwaysRicochetAt - guaranteed ricochet angle (deg)mapped65[60 – 80], med 60 · 6 distinct · tracks nation (r=0.83)
7game-logic constantconstant1const = 1.0
8Caliber-band coefficient on AP (10.0 DD <130mm, 8.5 CL 130-180mm, 7.0 CA 180-220mm, 6.0 large CA + BB 220mm+). On HE shells, this slot stores the HE penetration max value (caliber × 0.167 standard, × 0.25 improved). Not pen-related on AP, purely a category/visual scale.mapped6[6 – 10], med 7 · 4 distinct · tracks caliber (r=0.50) · tracks nation (r=0.75)
9bulletDetonator - AP fuse timer (s)mapped0.033[0.004 – 0.033], med 0.025 · 8 distinct · tracks nation (r=0.58)
10game-logic constantconstant0const = 0.0
11bulletDetonatorThreshold - AP fuse arming threshold (mm)mapped63[12 – 85], med 30 · 35 distinct
12bulletDiametr - caliber (metres; *1000 => mm)mapped0.38[0.076 – 0.508], med 0.18 · 43 distinct
13bulletKrupp - AP penetration Krupp coefficientmapped2550[1373 – 3000], med 2400 · 130 distinct
14bulletMass - shell mass (kg)mapped800[5.9 – 2053], med 97.5 · 148 distinct
15game-logic constantconstant0const = 0.0
16bulletRicochetAt - minimum ricochet angle (deg)mapped45[45 – 91], med 45 · 6 distinct · tracks nation (r=0.88)
17bulletSpeed - muzzle velocity (m/s)mapped820[660 – 1000], med 831 · 80 distinct
18game-logic constantconstant0.8const = 0.800000011920929
19AP fuse special-behavior multiplier. 0.6 ONLY on Japanese cruiser AP shells (Mogami/Atago/Aoba/Myoko/Ibuki/Zao tech-tree line + IJN cruiser premiums Yahagi/Agano/E-Dragon/S-Dragon/Desert-Falcon). Default 0.9 on every other ship. Matches WoWs PC 'IJN cruiser improved AP' feature.mapped0.9[0.6 – 0.9], med 0.9 · 2 distinct · tracks caliber (r=0.67) · tracks class (r=0.67) · tracks nation (r=0.96)
20game-logic constantconstant10const = 10.0
21burnProb - fire chance (fraction); negative on APmapped-0.5const = -0.5
22AP shell AOE/splash radius (scales with shell mass). Wickes 102mm 15kg → 3; Yamato 460mm 1460kg → 400; Incomparable → 550 (cohort max). Affects overpenetration splash damage radius. On SAP (CS) shells the SAME slot is the SAP fragment/splash radius: scales with mass (90mm → 5, 203mm → 20-30, 320mm 485kg → 175, 406mm → 250, 457mm 1814kg → 400) but is ALSO a per-ship balance lever (135mm 32.7kg → 5/12/16/24 across Andrea Doria / Paolo Emilio / F. Gonzaga / R. Lauria). 0 on HE. Verified 2026-06-27 across all 54 SAP shells.mapped120[0 – 550], med 20 · 44 distinct
23asset / particle pathvisualparticles/trails/Trail_smoke_commander_R.ddsconst = particles/trails/Trail_smoke_commander_R…
24game-logic constantconstantconst =
25game-logic constantconstant0const = 0.0
26game-logic constantconstant0const = 0.0
27game-logic constantconstantconst =
28needs identifyingneeds IDparticles/onGroundExplosion360mm.xml3 distinct
29asset / particle pathvisualparticles/trails/Trail_Shell_Hat_Enemy.ddsconst = particles/trails/Trail_Shell_Hat_Enemy.d…
30Sub-classifier within state[8] bucket. 10 distinct values 0.20-0.53 across catalog. Joint distribution with state[8] suggests particle/visual-effect tuning, not gameplay.mapped0.53[0.2 – 0.53], med 0.33 · 10 distinct
31asset / particle pathvisualparticles/trails/Trail_Shell_Hat.ddsconst = particles/trails/Trail_Shell_Hat.dds
32game-logic constantconstantconst =
33asset / particle pathvisualparticles/trails/Trail_Gk.ddsconst = particles/trails/Trail_Gk.dds
34needs identifyingneeds IDparticles/Explosion_360_AP_Void.xml3 distinct
35Shell-effect category (3 values). 10.0 on most ships; 2.5 on a subset; 2.3 ONLY on Japanese BB AP (Amagi/Ashitaka/Daisen/Dewa/Hizen). Likely audio/visual cue per shell family.mapped10[2.3 – 10], med 10 · 3 distinct · tracks caliber (r=0.50) · tracks class (r=0.56) · tracks nation (r=0.75)
36HE-shell / HE-bomb category coefficient. On Ammo(HE): 3.5 on 505 standard ship-fired HE shells (every class with HE), 3.4 on 74 BB-caliber HE shells (343-431mm guns - Bismarck, Alabama, Queen Elizabeth, Borodino, etc.), 1.05 on 35 air-dropped HE bombs (CV/hybrid-CV payloads). On Ammo(CS): 3.0/2.05/1.6. On Ammo(AP): always constant 3.0. VERIFIED 2026-05-30.mapped2.72const = 2.7200000286102295
37Air-drop-vs-ship-fire partition (HE). 0.11 on 579 ship-fired HE shells; 0.06 on 35 air-dropped HE bombs.mapped0.1const = 0.10000000149011612
38game-logic constantconstant1const = 1.0
39asset / particle pathvisualparticles/onWaterExplosion127mm.xmlconst = particles/onWaterExplosion127mm.xml
40asset / particle pathvisualGameLogic.Shot.GK.IncomingShellconst = GameLogic.Shot.GK.IncomingShell
41Air-drop-vs-ship-fire partition (HE). 70 on 721 ship-fired HE shells; 20 on 395 air-dropped HE bombs / fighter ammo. Bundled with state[44/49/50/52] - all flip together between ship-fired and air-dropped HE.mapped70const = 70.0
42HE-shell-size category. 0.37 on 204 small-caliber HE (76-152mm DD/CL shells); 0.80 on 375 larger-caliber HE (100-508mm CL/CA/BB shells); 0.65 on 35 air-dropped HE bombs. Caliber-band tiered scalar, partition matches main-battery caliber.mapped0.37const = 0.3700000047683716
43asset / particle pathvisualparticles/trails/Trail_smoke.ddsconst = particles/trails/Trail_smoke.dds
44Air-drop-vs-ship-fire partition (HE). 0.2 on ship-fired HE; 0.1 on air-dropped HE.mapped0.2const = 0.20000000298023224
45game-logic constantconstant22const = 22.0
46game-logic constantconstant0const = 0.0
47game-logic constantconstant0const = 0.0
48game-logic constantconstantconst =
49Air-drop-vs-ship-fire partition (HE). 75 on ship-fired HE; 22 on air-dropped HE.mapped75const = 75.0
50Air-drop-vs-ship-fire partition (HE). 1.0 on ship-fired HE; 0.8 on air-dropped HE.mapped1const = 1.0
51asset / particle pathvisualparticles/trails/Trail_Gk_Enemy.ddsconst = particles/trails/Trail_Gk_Enemy.dds
52Air-drop-vs-ship-fire partition (HE). 0.11 on ship-fired HE; 0.035 on air-dropped HE.mapped0.088const = 0.08799999952316284
53game-logic constantconstantFalseconst = False
54game-logic constantconstantFalseconst = False
55game-logic constantconstant0const = 0.0
56game-logic constantconstant0const = 0.0
57needs identifyingneeds IDparticles/onWaterExplosion360mm.xml3 distinct
58game-logic constantconstant2.0, 6.0const = [2.0, 6.0]
Ammo(HE) 59 slots · 27 mapped (46%) · 17 constant · 3 visual · 0 sub-entity · 12 need ID example: PGPA102_380MM_HE_HE_L_4_6_BISMARCK (Ammo)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0alphaDamage - maximum shell damagemapped4400[800 – 8200], med 1900 · 94 distinct
1alphaPiercingCS - SAP shell penetration (mm). 0 on AP/HE shells. Verified 2026-05 in the spec reader across all 16 SAP-equipped ships: state[1]/caliber stays ~0.28 for Italian CL/DD SAP (135mm->38, 120mm->34.2) and ~0.25 for heavier Italian BB SAP (Ruggiero 457mm->114).mapped0const = 0.0
2alphaPiercingHE - HE penetration (mm); 0 for AP/SAP shellsmapped95[13 – 115], med 23 · 51 distinct
3ammoType - shell type ('AP' / 'HE' / 'CS')mappedHEconst = HE
4game-logic constantconstantFalseconst = False
5bulletAirDrag - ballistic drag coefficientmapped0.2763[0.21 – 0.6898], med 0.331 · 188 distinct
6bulletAlwaysRicochetAt - guaranteed ricochet angle (deg)mapped60const = 60.0
7game-logic constantconstant1const = 1.0
8Caliber-band coefficient on AP (10.0 DD <130mm, 8.5 CL 130-180mm, 7.0 CA 180-220mm, 6.0 large CA + BB 220mm+). On HE shells, this slot stores the HE penetration max value (caliber × 0.167 standard, × 0.25 improved). Not pen-related on AP, purely a category/visual scale.mapped45[8 – 68], med 68 · 3 distinct
9bulletDetonator - AP fuse timer (s)mapped0.03[0.001 – 0.03], med 0.001 · 3 distinct · tracks caliber (r=0.57) · tracks nation (r=0.62)
10game-logic constantconstant0const = 0.0
11bulletDetonatorThreshold - AP fuse arming threshold (mm)mapped2const = 2.0
12bulletDiametr - caliber (metres; *1000 => mm)mapped0.381[0.075 – 0.508], med 0.13 · 52 distinct
13bulletKrupp - AP penetration Krupp coefficientmapped32[1 – 1350], med 250 · 31 distinct
14bulletMass - shell mass (kg)mapped800[4.91 – 2053], med 33.4 · 150 distinct
15game-logic constantconstant0const = 0.0
16bulletRicochetAt - minimum ricochet angle (deg)mapped45[45 – 91], med 91 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.77) · tracks nation (r=0.91)
17bulletSpeed - muzzle velocity (m/s)mapped820[657 – 1000], med 840 · 85 distinct
18game-logic constantconstant0.8const = 0.800000011920929
19AP fuse special-behavior multiplier. 0.6 ONLY on Japanese cruiser AP shells (Mogami/Atago/Aoba/Myoko/Ibuki/Zao tech-tree line + IJN cruiser premiums Yahagi/Agano/E-Dragon/S-Dragon/Desert-Falcon). Default 0.9 on every other ship. Matches WoWs PC 'IJN cruiser improved AP' feature.mapped0.9const = 0.8999999761581421
20game-logic constantconstant10const = 10.0
21burnProb - fire chance (fraction); negative on APmapped0.34[0.04 – 0.63], med 0.08 · 47 distinct
22AP shell AOE/splash radius (scales with shell mass). Wickes 102mm 15kg → 3; Yamato 460mm 1460kg → 400; Incomparable → 550 (cohort max). Affects overpenetration splash damage radius. On SAP (CS) shells the SAME slot is the SAP fragment/splash radius: scales with mass (90mm → 5, 203mm → 20-30, 320mm 485kg → 175, 406mm → 250, 457mm 1814kg → 400) but is ALSO a per-ship balance lever (135mm 32.7kg → 5/12/16/24 across Andrea Doria / Paolo Emilio / F. Gonzaga / R. Lauria). 0 on HE. Verified 2026-06-27 across all 54 SAP shells.mapped120[0 – 550], med 10 · 43 distinct
23needs identifyingneeds IDparticles/trails/Trail_smoke_commander_R.dds2 distinct
24game-logic constantconstantconst =
25needs identifyingneeds ID4230[150 – 9230], med 560 · 127 distinct
26game-logic constantconstant0const = 0.0
27game-logic constantconstantconst =
28needs identifyingneeds IDparticles/onGroundExplosion360mm.xml3 distinct
29needs identifyingneeds IDparticles/trails/Trail_Shell_Hat_HE_Enemy.dds2 distinct
30Sub-classifier within state[8] bucket. 10 distinct values 0.20-0.53 across catalog. Joint distribution with state[8] suggests particle/visual-effect tuning, not gameplay.mapped0.56[0.2 – 0.56], med 0.27 · 11 distinct
31needs identifyingneeds IDparticles/trails/Trail_Shell_Hat_HE.dds2 distinct
32game-logic constantconstantconst =
33needs identifyingneeds IDparticles/trails/Trail_Gk_HE.dds2 distinct
34needs identifyingneeds IDparticles/Explosion_360_HE_Void.xml3 distinct
35Shell-effect category (3 values). 10.0 on most ships; 2.5 on a subset; 2.3 ONLY on Japanese BB AP (Amagi/Ashitaka/Daisen/Dewa/Hizen). Likely audio/visual cue per shell family.mapped10[2.3 – 10], med 10 · 3 distinct
36HE-shell / HE-bomb category coefficient. On Ammo(HE): 3.5 on 505 standard ship-fired HE shells (every class with HE), 3.4 on 74 BB-caliber HE shells (343-431mm guns - Bismarck, Alabama, Queen Elizabeth, Borodino, etc.), 1.05 on 35 air-dropped HE bombs (CV/hybrid-CV payloads). On Ammo(CS): 3.0/2.05/1.6. On Ammo(AP): always constant 3.0. VERIFIED 2026-05-30.mapped3.4[1.05 – 3.5], med 3.5 · 3 distinct
37Air-drop-vs-ship-fire partition (HE). 0.11 on 579 ship-fired HE shells; 0.06 on 35 air-dropped HE bombs.mapped0.11[0.06 – 0.11], med 0.11 · 2 distinct
38game-logic constantconstant1const = 1.0
39asset / particle pathvisualparticles/onWaterExplosion127mm.xmlconst = particles/onWaterExplosion127mm.xml
40asset / particle pathvisualGameLogic.Shot.GK.IncomingShellconst = GameLogic.Shot.GK.IncomingShell
41Air-drop-vs-ship-fire partition (HE). 70 on 721 ship-fired HE shells; 20 on 395 air-dropped HE bombs / fighter ammo. Bundled with state[44/49/50/52] - all flip together between ship-fired and air-dropped HE.mapped70[20 – 70], med 70 · 2 distinct
42HE-shell-size category. 0.37 on 204 small-caliber HE (76-152mm DD/CL shells); 0.80 on 375 larger-caliber HE (100-508mm CL/CA/BB shells); 0.65 on 35 air-dropped HE bombs. Caliber-band tiered scalar, partition matches main-battery caliber.mapped0.8[0.37 – 0.8], med 0.65 · 3 distinct
43asset / particle pathvisualparticles/trails/Trail_smoke.ddsconst = particles/trails/Trail_smoke.dds
44Air-drop-vs-ship-fire partition (HE). 0.2 on ship-fired HE; 0.1 on air-dropped HE.mapped0.2[0.1 – 0.2], med 0.2 · 2 distinct
45game-logic constantconstant22const = 22.0
46needs identifyingneeds ID-0.12[-0.4 – 0], med -0.245 · 26 distinct
47needs identifyingneeds ID2.26[0.18 – 3.56], med 0.46 · 101 distinct
48game-logic constantconstantconst =
49Air-drop-vs-ship-fire partition (HE). 75 on ship-fired HE; 22 on air-dropped HE.mapped75[22 – 75], med 75 · 2 distinct
50Air-drop-vs-ship-fire partition (HE). 1.0 on ship-fired HE; 0.8 on air-dropped HE.mapped1[0.8 – 1], med 1 · 2 distinct
51needs identifyingneeds IDparticles/trails/Trail_Gk_HE_Enemy.dds2 distinct
52Air-drop-vs-ship-fire partition (HE). 0.11 on ship-fired HE; 0.035 on air-dropped HE.mapped0.11[0.035 – 0.11], med 0.11 · 2 distinct
53game-logic constantconstantFalseconst = False
54game-logic constantconstantFalseconst = False
55game-logic constantconstant0const = 0.0
56needs identifyingneeds ID5.82[0.23 – 10.46], med 0.81 · 128 distinct
57needs identifyingneeds IDparticles/onWaterExplosion360mm.xml3 distinct
58game-logic constantconstant2.0, 6.0const = [2.0, 6.0]
Ammo(CS) 59 slots · 27 mapped (46%) · 20 constant · 10 visual · 0 sub-entity · 2 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0alphaDamage - maximum shell damagemapped[1900 – 16600], med 3050 · 21 distinct
1alphaPiercingCS - SAP shell penetration (mm). 0 on AP/HE shells. Verified 2026-05 in the spec reader across all 16 SAP-equipped ships: state[1]/caliber stays ~0.28 for Italian CL/DD SAP (135mm->38, 120mm->34.2) and ~0.25 for heavier Italian BB SAP (Ruggiero 457mm->114).mapped[26 – 114], med 38 · 12 distinct
2alphaPiercingHE - HE penetration (mm); 0 for AP/SAP shellsmapped0const = 0.0
3ammoType - shell type ('AP' / 'HE' / 'CS')mappedCSconst = CS
4game-logic constantconstantFalseconst = False
5bulletAirDrag - ballistic drag coefficientmapped[0.2 – 0.414], med 0.3246 · 17 distinct
6bulletAlwaysRicochetAt - guaranteed ricochet angle (deg)mapped[75 – 90], med 80 · 4 distinct · tracks class (r=0.67) · tracks nation (r=0.75)
7game-logic constantconstant1const = 1.0
8Caliber-band coefficient on AP (10.0 DD <130mm, 8.5 CL 130-180mm, 7.0 CA 180-220mm, 6.0 large CA + BB 220mm+). On HE shells, this slot stores the HE penetration max value (caliber × 0.167 standard, × 0.25 improved). Not pen-related on AP, purely a category/visual scale.mapped45const = 45.0
9bulletDetonator - AP fuse timer (s)mapped0.03const = 0.029999999329447746
10game-logic constantconstant0const = 0.0
11bulletDetonatorThreshold - AP fuse arming threshold (mm)mapped25const = 25.0
12bulletDiametr - caliber (metres; *1000 => mm)mapped[0.09 – 0.457], med 0.135 · 11 distinct
13bulletKrupp - AP penetration Krupp coefficientmapped3const = 3.0
14bulletMass - shell mass (kg)mapped[10.1 – 1814], med 32.7 · 16 distinct
15game-logic constantconstant0const = 0.0
16bulletRicochetAt - minimum ricochet angle (deg)mapped[60 – 80], med 70 · 3 distinct · tracks class (r=0.67) · tracks nation (r=0.75)
17bulletSpeed - muzzle velocity (m/s)mapped[700 – 995], med 875 · 17 distinct
18game-logic constantconstant0.8const = 0.800000011920929
19AP fuse special-behavior multiplier. 0.6 ONLY on Japanese cruiser AP shells (Mogami/Atago/Aoba/Myoko/Ibuki/Zao tech-tree line + IJN cruiser premiums Yahagi/Agano/E-Dragon/S-Dragon/Desert-Falcon). Default 0.9 on every other ship. Matches WoWs PC 'IJN cruiser improved AP' feature.mapped0.9const = 0.8999999761581421
20game-logic constantconstant10const = 10.0
21burnProb - fire chance (fraction); negative on APmapped-0.5const = -0.5
22AP shell AOE/splash radius (scales with shell mass). Wickes 102mm 15kg → 3; Yamato 460mm 1460kg → 400; Incomparable → 550 (cohort max). Affects overpenetration splash damage radius. On SAP (CS) shells the SAME slot is the SAP fragment/splash radius: scales with mass (90mm → 5, 203mm → 20-30, 320mm 485kg → 175, 406mm → 250, 457mm 1814kg → 400) but is ALSO a per-ship balance lever (135mm 32.7kg → 5/12/16/24 across Andrea Doria / Paolo Emilio / F. Gonzaga / R. Lauria). 0 on HE. Verified 2026-06-27 across all 54 SAP shells.mapped[3 – 400], med 9 · 13 distinct
23asset / particle pathvisualparticles/trails/Trail_smoke_commander_R.ddsconst = particles/trails/Trail_smoke_commander_R…
24game-logic constantconstantconst =
25game-logic constantconstant0const = 0.0
26game-logic constantconstant0const = 0.0
27game-logic constantconstantconst =
28asset / particle pathvisualparticles/onGroundExplosion127mm.xmlconst = particles/onGroundExplosion127mm.xml
29asset / particle pathvisualparticles/trails/Trail_Shell_Hat_CS_Enemy.ddsconst = particles/trails/Trail_Shell_Hat_CS_Enem…
30Sub-classifier within state[8] bucket. 10 distinct values 0.20-0.53 across catalog. Joint distribution with state[8] suggests particle/visual-effect tuning, not gameplay.mapped[0.23 – 0.4], med 0.3 · 4 distinct
31asset / particle pathvisualparticles/trails/Trail_Shell_Hat_CS.ddsconst = particles/trails/Trail_Shell_Hat_CS.dds
32game-logic constantconstantconst =
33asset / particle pathvisualparticles/trails/Trail_Gk_CS.ddsconst = particles/trails/Trail_Gk_CS.dds
34asset / particle pathvisualparticles/Explosion_127_AP_void.xmlconst = particles/Explosion_127_AP_void.xml
35Shell-effect category (3 values). 10.0 on most ships; 2.5 on a subset; 2.3 ONLY on Japanese BB AP (Amagi/Ashitaka/Daisen/Dewa/Hizen). Likely audio/visual cue per shell family.mapped[3.4 – 10], med 3.4 · 2 distinct
36HE-shell / HE-bomb category coefficient. On Ammo(HE): 3.5 on 505 standard ship-fired HE shells (every class with HE), 3.4 on 74 BB-caliber HE shells (343-431mm guns - Bismarck, Alabama, Queen Elizabeth, Borodino, etc.), 1.05 on 35 air-dropped HE bombs (CV/hybrid-CV payloads). On Ammo(CS): 3.0/2.05/1.6. On Ammo(AP): always constant 3.0. VERIFIED 2026-05-30.mapped[1.6 – 3], med 3 · 3 distinct · tracks nation (r=0.50)
37Air-drop-vs-ship-fire partition (HE). 0.11 on 579 ship-fired HE shells; 0.06 on 35 air-dropped HE bombs.mapped[0.06 – 0.11], med 0.06 · 3 distinct · tracks caliber (r=0.71) · tracks class (r=0.50)
38game-logic constantconstant1const = 1.0
39asset / particle pathvisualparticles/onWaterExplosion127mm.xmlconst = particles/onWaterExplosion127mm.xml
40asset / particle pathvisualGameLogic.Shot.GK.IncomingShellconst = GameLogic.Shot.GK.IncomingShell
41Air-drop-vs-ship-fire partition (HE). 70 on 721 ship-fired HE shells; 20 on 395 air-dropped HE bombs / fighter ammo. Bundled with state[44/49/50/52] - all flip together between ship-fired and air-dropped HE.mapped[45 – 70], med 45 · 2 distinct
42HE-shell-size category. 0.37 on 204 small-caliber HE (76-152mm DD/CL shells); 0.80 on 375 larger-caliber HE (100-508mm CL/CA/BB shells); 0.65 on 35 air-dropped HE bombs. Caliber-band tiered scalar, partition matches main-battery caliber.mapped[0.37 – 0.8], med 0.72 · 3 distinct
43needs identifyingneeds ID2 distinct
44Air-drop-vs-ship-fire partition (HE). 0.2 on ship-fired HE; 0.1 on air-dropped HE.mapped[0.15 – 0.2], med 0.15 · 2 distinct
45needs identifyingneeds ID[2 – 22], med 22 · 2 distinct · tracks class (r=0.67) · tracks nation (r=0.50)
46game-logic constantconstant0const = 0.0
47game-logic constantconstant0const = 0.0
48game-logic constantconstantconst =
49Air-drop-vs-ship-fire partition (HE). 75 on ship-fired HE; 22 on air-dropped HE.mapped[48 – 75], med 48 · 2 distinct
50Air-drop-vs-ship-fire partition (HE). 1.0 on ship-fired HE; 0.8 on air-dropped HE.mapped[0.9 – 1], med 0.9 · 2 distinct
51asset / particle pathvisualparticles/trails/Trail_Gk_CS_Enemy.ddsconst = particles/trails/Trail_Gk_CS_Enemy.dds
52Air-drop-vs-ship-fire partition (HE). 0.11 on ship-fired HE; 0.035 on air-dropped HE.mapped[0.077 – 0.097], med 0.097 · 2 distinct · tracks nation (r=0.50)
53game-logic constantconstantFalseconst = False
54game-logic constantconstantFalseconst = False
55game-logic constantconstant0const = 0.0
56game-logic constantconstant0const = 0.0
57asset / particle pathvisualparticles/onWaterExplosion127mm.xmlconst = particles/onWaterExplosion127mm.xml
58game-logic constantconstant2.0, 6.0const = [2.0, 6.0]

Secondary battery

ATBA 19 slots · 4 mapped (21%) · 14 constant · 0 visual · 0 sub-entity · 1 need ID example: Module A_ATBA (ATBA)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0secondary battery range (m)mapped7500[2000 – 8000], med 5000 · 27 distinct
1secondary dispersion (m) - candidatemapped172[3 – 178], med 134 · 94 distinct
2needs identifyingneeds ID602[6 – 703], med 478 · 171 distinct
3game-logic constantconstant1const = 1.0
4game-logic constantconstant0const = 0.0
5game-logic constantconstant1const = 1.0
6game-logic constantconstant1const = 1.0
7game-logic constantconstant1const = 1.0
8game-logic constantconstant10const = 10.0
9game-logic constantconstant2const = 2.0
10game-logic constantconstant1const = 1.0
11game-logic constantconstant10const = 10.0
12game-logic constantconstant5const = 5.0
13game-logic constantconstant1const = 1.0
14game-logic constantconstant0.1const = 0.10000000149011612
15game-logic constantconstant1const = 1.0
16per-target-class secondary dispersion multipliersmapped→ sub-entityconst = {'AirCarrier': [1.0, 1.0, 1.0], 'Battles…
17game-logic constantconstant1const = 1.0
18ATBA mount dict {HP_AGS_N : GameParamData wrapping ATBAGun}mapped→ sub-entity434 distinct
ATBAGun 33 slots · 13 mapped (39%) · 9 constant · 0 visual · 2 sub-entity · 9 need ID example: ↳ A_ATBA.state[18]['HP_GGS_5'].state[0] - ATBAGun
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entity260 distinct
1barrel or salvo count candidatemapped3const = 3.0
2shell ID listmappedPGPA003_150mm_HE_HE_N_F112 distinct
3needs identifyingneeds ID0[-1 – 190], med 133 · 11 distinct
4needs identifyingneeds ID0[-1 – 0.279], med 0.073 · 58 distinct
5reference to another entitysub-entity→ sub-entity53 distinct
6barrelDiameter - caliber (metres; *1000 => mm). PC-aligned 2026-05.mapped0.15[0.075 – 0.234], med 0.127 · 25 distinct
7game-logic constantconstant0const = 0
8game-logic constantconstantconst = None
9dead-mesh modelmappedcontent/gameplay/germany/gun/secondary/GGS002_…188 distinct
10needs identifyingneeds ID111 distinct
11Mount rotation/timing tier coefficient. 0.6 on standard ATBA mounts (8926 mounts); 0.5 on the 70 outlier mounts that belong to Graf Zeppelin + Arkansas-FE (CV-style secondary mounts). Bundled with state[13/16/25] - all four switch together. NOT the secondary radiusOnMax/vertical-dispersion coefficient (ruled out 2026-06-23: independent of state[14] dispersion, and secondaries are circles in-game (V = H on Bismarck/Massachusetts/Tallinn/Scharnhorst/Agincourt) - secondary dispersion has no V/H ratio because there is no ellipse.mapped0.6[0.5 – 0.6], med 0.6 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.82) · tracks nation (r=0.97)
12horizSector - horizontal traverse arc (degrees)mapped-165.0, 0.0695 distinct
13Mount rotation/timing tier coefficient. 333.33 on standard mounts; 1000.0 on Graf Zeppelin / Arkansas-FE outlier mounts. 333.33 = 1000/3 - mathematical pair with the alternate value.mapped333.333[333.333 – 1000], med 333.333 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.82) · tracks nation (r=0.97)
14needs identifyingneeds ID20[8 – 20], med 20 · 9 distinct · tracks nation (r=0.70)
15game-logic constantconstantconst =
16Mount rotation/timing tier coefficient. 1.0 on standard mounts; 1.6 on Graf Zeppelin / Arkansas-FE outlier mounts.mapped1[1 – 1.6], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.82) · tracks nation (r=0.97)
17needs identifyingneeds ID64 distinct · tracks nation (r=0.57)
18game-logic constantconstantFalseconst = False
19mount model pathmappedcontent/gameplay/germany/gun/secondary/GGS002_…188 distinct
20needs identifyingneeds ID2[1 – 4], med 2 · 4 distinct
21needs identifyingneeds ID56 distinct · tracks class (r=0.55) · tracks nation (r=0.85)
22needs identifyingneeds ID2 distinct
23game-logic constantconstant0.8const = 0.800000011920929
24game-logic constantconstant1const = 1.0
25Mount rotation/timing tier coefficient. 0.1 on standard mounts; 0.4 on Graf Zeppelin / Arkansas-FE outlier mounts.mapped0.1[0.1 – 0.4], med 0.1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.82) · tracks nation (r=0.97)
26rotationSpeed - (horizontal, vertical) traverse speed deg/s. PC-aligned 2026-05.mapped60.0, 1.05 distinct · tracks class (r=0.64) · tracks nation (r=0.85)
27shotDelay - secondary reload (s). PC-aligned 2026-05.mapped7.5[2 – 15], med 5.5 · 40 distinct
28needs identifyingneeds IDparticles/guns/Gk_OwnShot_100.xml6 distinct
29game-logic constantconstantTrueconst = True
30game-logic constantconstant0.0001const = 9.999999747378752e-05
31game-logic constantconstantconst = None
32vertSector - vertical aiming arc (degrees). PC-aligned 2026-05.mapped-1.0, 40.069 distinct

Torpedoes

Torpedoes 2 slots · 0 mapped (0%) · 0 constant · 0 visual · 1 sub-entity · 1 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID2 distinct · tracks nation (r=0.97)
1reference to another entitysub-entity→ sub-entity497 distinct
Torpedo 49 slots · 14 mapped (29%) · 16 constant · 7 visual · 0 sub-entity · 12 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0game-logic constantconstantconst = []
1Constant 100.0 across every torpedo projectile (kept for parity with the PC projectile schema).mapped100const = 100.0
2Raw damage parameter (PC `alphaDamage` candidate). Reliable ratio ~2.78x the displayed torpedo damage on every sampled ship (Shima 66800/23767=2.81, Halland 30870/11290=2.73, Khaba 54900/19500=2.81, Fubuki 44900/16267=2.76, Fletcher 46600/16633=2.80, Shenyang 33000/12000=2.75, Le-Hardi 36000/13100=2.75, Duchaffault 35000/12667=2.76). Display damage = state[2] / ~2.78 (or display_damage is the balance-adjusted value derived from a PC raw alphaDamage that uses different units).mapped[15100 – 83600], med 40200 · 83 distinct
3Constant 1000.0 across every torpedo projectile.mapped1000const = 1000.0
4game-logic constantconstanttorpedoconst = torpedo
5Constant 1.0 across every ship-launched torpedo projectile in the catalog. the spec reader:454 labels this as `armingTime` based on a Zuiho/Hakuryu reading, but those values are on a DIFFERENT entity (Plane / DiveBomber carrying an airstrike-torpedo payload); the Torpedo class itself reads 1.0 everywhere. Likely the 1.0 is a multiplier/sentinel.mapped1const = 1.0
6game-logic constantconstantFalseconst = False
7Torpedo diameter (m; *1000 => mm). 533mm most common (USN Mk15/Mk16, IJN Type 8, RN Mk IX, etc.); 610mm IJN long-lance line; 550mm French; 450mm older or interwar; plus a handful of one-off calibers. VERIFIED 2026-05-30.mapped[0.3 – 0.7], med 0.533 · 10 distinct · tracks nation (r=0.74)
8needs identifyingneeds ID2 distinct · tracks caliber (r=0.71) · tracks class (r=0.78) · tracks nation (r=0.97)
9game-logic constantconstant0const = 0.0
10Arming distance candidate (metres). 2026-05-28 by the spec reader:446 with the examples: 50 (Mk-11 short fuse), 200 (IJN Type 90), 250 (German G7a), 400 (RN Plymouth super-deep). HOWEVER the in-game spec-card 'Torp Arming (m)' value does NOT match state[10] directly: Halland state[10]=400 but in-game arming=261m, Castilla state[10]=300 but in-game=196m. The displayed value is per-ship 5.9-6.5s of travel at base torp speed; state[10] likely represents a related but distinct fuse parameter (max-effective arming distance, or arming-distance-at-PC-reference-speed). Needs reconciliation against per-tier captures.mapped[0 – 600], med 200 · 22 distinct
11game-logic constantconstantconst =
12Torpedo AoE / splash damage addend. 2026-05-28 by the spec reader:462 against WG patch notes (Hakuryu 'Torpedo AoE damage' bump 1000 -> 1100 matches state[12] value).mapped[500 – 10000], med 1000 · 14 distinct
13needs identifyingneeds ID[0.14 – 0.41], med 0.14 · 8 distinct · tracks caliber (r=0.57) · tracks nation (r=0.91)
14game-logic constantconstant0const = 0.0
15asset / particle pathvisualparticles/airplanes/Air_torpedo_ground_1.xmlconst = particles/airplanes/Air_torpedo_ground_1…
16game-logic constantconstant20const = 20.0
17game-logic constantconstant20const = 20.0
18game-logic constantconstant1const = 1.0
19asset / particle pathvisualparticles/airplanes/Air_state_3_fire.xmlconst = particles/airplanes/Air_state_3_fire.xml
20asset / particle pathvisualparticles/onGroundExplosionTorpedo.xmlconst = particles/onGroundExplosionTorpedo.xml
21game-logic constantconstant0const = 0.0
22ignoreClasses - target classes the torpedo IGNORES (BLACKLIST; PC field name confirmed via FilteredShip Data2Json/filters/Projectile.py). 348 standard torps = [] (hit everything); 21 deep-water torps = ['Destroyer'] (every Pan-Asian DD with deep-water torps - Shenyang/Chumphon/Harbin/Chungking/Siliwangi/Fenyang/Huanghe/Jianwei/Jinan/Phra-Ruang/Lushun/Irian/Sejong/Hsienyang/Rahmat/Chung-Mu/Gadjah-Mada/Anshan/Longjiang/Fushun plus Tsurugi). Deep-water torps cannot hit destroyers - exactly the PC behavior.mapped2 distinct · tracks caliber (r=0.57) · tracks nation (r=0.97)
23isDeepWater bool (PC field name confirmed). False on 348 standard torps; True on the same 21 deep-water torps that have state[22]=['Destroyer']. Perfect 1:1 correlation with state[22].mapped2 distinct · tracks caliber (r=0.57) · tracks nation (r=0.97)
24needs identifyingneeds ID[0 – 20], med 0 · 3 distinct · tracks nation (r=0.91)
25uwSplashCoeff - flooding chance percentage (per-hit flooding %). Matches in-game/PC values across every spot-checked torp: Shimakaze Type93 mod3 = 367 (367%), Halland Torped M1947 mod1 = 500, Khabarovsk ET-46 = 200, Fubuki 610 8mod2 = 333, Fletcher Mk15 mod3 = 305, Shenyang Mk11 D = 244. VERIFIED 2026-05-30.mapped[130 – 666.67], med 267 · 58 distinct
26Two-element kinematic constant. [40.0, 120.0] on 361 ships (standard). [55.0, 90.0] on 3 French interwar DDs (Duchaffault / L-Adroit / Ladroit). [60.0, 95.0] on 5 French interwar DDs (Le Hardi / L-Aventurier / Cassard / Orage / Laventurier). Pattern isolates the French interwar / Le Hardi class destroyer torpedoes; meaning is unknown but consistent (likely arming-distance pair or some kinematic envelope).mapped3 distinct · tracks caliber (r=0.71) · tracks class (r=0.78) · tracks nation (r=0.94)
27needs identifyingneeds ID32 distinct
28asset / particle pathvisualparticles/tracerTorpedo_avatar.xmlconst = particles/tracerTorpedo_avatar.xml
29game-logic constantconstant0.75const = 0.75
30asset / particle pathvisualcontent/location/misc/gameplay/LMY052_Parachut…const = content/location/misc/gameplay/LMY052_Pa…
31game-logic constantconstant0.95const = 0.949999988079071
32game-logic constantconstanttorpedoconst = torpedo
33needs identifyingneeds ID3 distinct
34game-logic constantconstant1const = 1.0
35asset / particle pathvisualparticles/onWaterExplosion127mm.xmlconst = particles/onWaterExplosion127mm.xml
36Torpedo speed (knots). Matches in-game across every spot-checked torp: Shimakaze Type93 mod3 = 67kt, Halland M1947 mod1 = 86kt, Khabarovsk ET-46 = 58kt, Fubuki 8mod2 = 59kt, Fletcher Mk15 mod3 = 55kt, Shenyang Mk11 D = 60kt. VERIFIED 2026-05-30.mapped[40 – 86], med 61 · 32 distinct
37needs identifyingneeds ID[60 – 340], med 60 · 6 distinct · tracks caliber (r=0.71) · tracks class (r=0.78) · tracks nation (r=0.94)
38needs identifyingneeds ID2 distinct · tracks caliber (r=0.71) · tracks class (r=0.78) · tracks nation (r=0.97)
39needs identifyingneeds ID[0.1 – 2], med 0.3 · 7 distinct
40needs identifyingneeds ID[0.6 – 1.8], med 1.1 · 9 distinct
41asset / particle pathvisualparticles/tracerTorpedo.xmlconst = particles/tracerTorpedo.xml
42game-logic constantconstantTrueconst = True
43needs identifyingneeds ID[0.63 – 4.36], med 2.4 · 60 distinct
44Torpedo visibility-from-sea distance (km). Shimakaze Type93 mod3 = 1.7km matches in-game; other ships' values consistent with the visibility-from-sea spec (Khabarovsk ET-46 = 0.6km, Halland M1947 mod1 = 1.8km, etc.). VERIFIED on Shimakaze 2026-05-30.mapped[0.6 – 2.5], med 1.3 · 16 distinct
45Constant [1.3, 1.9] across every projectile.mapped3 distinct · tracks caliber (r=0.71) · tracks class (r=0.78) · tracks nation (r=0.94)
46needs identifyingneeds ID[0.5 – 1.1], med 0.8 · 8 distinct
47needs identifyingneeds ID2 distinct
48game-logic constantconstantFalseconst = False

Anti-aircraft & spotting

AirDefense 9 slots · 3 mapped (33%) · 5 constant · 0 visual · 0 sub-entity · 1 need ID example: Module A_AirDefense (AirDefense)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0game-logic constantconstant1const = 1.0
1game-logic constantconstant2const = 2.0
2game-logic constantconstant3const = 3.0
3game-logic constantconstant0.2const = 0.20000000298023224
4game-logic constantconstant1const = 1.0
5needs identifyingneeds ID15[0 – 15], med 10 · 4 distinct · tracks caliber (r=0.57) · tracks class (r=1.00) · tracks nation (r=0.98)
6(altitude breakpoint, decay_type, ...) tuples - aircraft accuracy decay curvemapped→ sub-entity4 distinct
7flak burst angular arcsmapped→ sub-entityconst = {'_list_len': 2, '_repr': '[(0.0, 180.0)…
8aura dict {AuraNear/AuraMedium/AuraFar/... : AirDefenseAura} and per-mount AntiAircraftGun rowsmapped→ sub-entity825 distinct
AirDefenseAura 54 slots · 19 mapped (35%) · 12 constant · 17 visual · 0 sub-entity · 6 need ID example: ↳ A_AirDefense.state[8]['AuraMedium'] - AirDefenseAura
#Field / what we knowStatus Bismarck valueCatalog range · notes
0continuous damage per second (DPS for this aura)mapped11[0 – 263], med 18 · 160 distinct
1areaDamagePeriod - AA damage tick interval (s). PC-aligned 2026-05.mapped0.2857const = 0.2857142984867096
2needs identifyingneeds IDparticles/airplanes/Air_defense_explosion_3.xm…2 distinct
3asset / particle pathvisualparticles/trails/Trail_Barrage_DPS.ddsconst = particles/trails/Trail_Barrage_DPS.dds
4needs identifyingneeds ID0[0 – 290], med 0 · 23 distinct
5Aura-band timing constant. 3.0 on every 'far' aura; 4.75 on every 'near' and 'medium' aura. Likely a burst-spawn or kinematic coefficient that differs between long-range flak and short-range continuous AA.mapped4.75[3 – 4.75], med 4.75 · 2 distinct
6game-logic constantconstantconst =
7asset / particle pathvisualparticles/trails/Trail_Aura_NonPrior_Bubble_en…const = particles/trails/Trail_Aura_NonPrior_Bub…
8asset / particle pathvisualparticles/trails/Trail_Aura_Prior_Bubble_en.dd…const = particles/trails/Trail_Aura_Prior_Bubble…
9needs identifyingneeds ID1[0 – 2.75], med 1 · 11 distinct
10game-logic constantconstant20const = 20.0
11game-logic constantconstant1const = 1.0
12asset / particle pathvisualparticles/trails/Trail_Aura_Bubble_en.ddsconst = particles/trails/Trail_Aura_Bubble_en.dd…
13game-logic constantconstant0.028const = 0.02800000086426735
14needs identifyingneeds IDparticles/airplanes/Air_defense_explosion_2.xm…3 distinct
15game-logic constantconstantTrueconst = True
16game-logic constantconstantFalseconst = False
17explosionCount - flak burst count. PC-aligned 2026-05.mapped15[0 – 15], med 15 · 4 distinct
18asset / particle pathvisualparticles/Empty_FX.xmlconst = particles/Empty_FX.xml
19asset / particle pathvisualparticles/Empty_FX.xmlconst = particles/Empty_FX.xml
20list of mount hardpoint names this aura is bound tomappedHP_GGA_11, HP_GGA_12, HP_GGA_19, HP_GGA_20, HP…1179 distinct
21Aura-band coefficient. 50 on every 'far' aura; 60 on every 'near' and 'medium' aura. Differs by aura band - exact field name TBD.mapped60[50 – 60], med 60 · 2 distinct
22hitChance - AA hit probability. PC-aligned 2026-05.mapped0.75[0.1 – 1], med 0.9 · 7 distinct
23innerBubbleCount - number of inner flak bursts (0-6). PC field name from mackbot. 4158 auras = 0 (no flak); the rest are tiered per-ship.mapped0[0 – 6], med 0 · 7 distinct
24Aura-band kinematic pair. [2.65, 3.15] on 'far' auras; [3.30, 3.80] on 'near'/'medium'. Two-element tuple, partition matches aura type.mapped3.299999952316284, 3.7999999523162842 distinct
25game-logic constantconstant20const = 20.0
26game-logic constantconstantTrueconst = True
27Aura-band coefficient. 0.4 on 'far'; 0.5 on 'near'/'medium'.mapped0.5[0.4 – 0.5], med 0.5 · 2 distinct
28aura range (m)mapped3500[800 – 6000], med 3500 · 21 distinct
29Aura-band coefficient. 0.1 on 'far'; 0.2 on 'near'/'medium'.mapped0.2[0.1 – 0.2], med 0.2 · 2 distinct
30minDistance - aura inner range (m). PC-aligned 2026-05.mapped100[100 – 3500], med 100 · 4 distinct
31needs identifyingneeds IDparticles/airplanes/Air_defense_explosion_fake…2 distinct
32asset / particle pathvisualparticles/trails/Trail_Aura_NonPrior_DPS_en.dd…const = particles/trails/Trail_Aura_NonPrior_DPS…
33outerBubbleCount - number of outer flak bursts (0/1/2). PC field name from mackbot.mapped0[0 – 2], med 0 · 3 distinct
34Aura-band kinematic pair. [2.45, 2.65] on 'far'; [2.50, 3.00] on 'near'/'medium'.mapped2.5, 3.02 distinct
35asset / particle pathvisualparticles/trails/Trail_Barrage_DPS.ddsconst = particles/trails/Trail_Barrage_DPS.dds
36asset / particle pathvisualparticles/trails/Trail_Aura_NonPrior_Bubble.dd…const = particles/trails/Trail_Aura_NonPrior_Bub…
37asset / particle pathvisualparticles/trails/Trail_Aura_Prior_Bubble.ddsconst = particles/trails/Trail_Aura_Prior_Bubble…
38asset / particle pathvisualparticles/trails/Trail_Aura_Bubble.ddsconst = particles/trails/Trail_Aura_Bubble.dds
39asset / particle pathvisualparticles/trails/Trail_Aura_NonPrior_DPS.ddsconst = particles/trails/Trail_Aura_NonPrior_DPS…
40asset / particle pathvisualparticles/trails/Trail_Aura_Prior_DPS.ddsconst = particles/trails/Trail_Aura_Prior_DPS.dd…
41asset / particle pathvisualparticles/trails/Trail_Aura_DPS.ddsconst = particles/trails/Trail_Aura_DPS.dds
42asset / particle pathvisualparticles/trails/Trail_Aura_Prior_DPS_en.ddsconst = particles/trails/Trail_Aura_Prior_DPS_en…
43areaDamageMultiplier / bubbleDamageMultiplier candidate. 5 discrete values 0.1 / 0.5 / 1.0 / 3.0 / 5.0; default 5.0 on standard auras. PC field name candidate from mackbot CONSUMABLE_KEYS.mapped0.5[0.1 – 5], med 0.5 · 5 distinct
44needs identifyingneeds ID1.5[0.78 – 1.56], med 1.3 · 14 distinct
45game-logic constantconstant0const = 0.0
46game-logic constantconstant0const = 0.0
47bubbleDamage - flak burst damage. 3 discrete values: 12, 21, 31. PC field name from mackbot. Higher value = more damage per flak burst.mapped21[12 – 31], med 21 · 3 distinct
48game-logic constantconstant1const = 1.0
49asset / particle pathvisualparticles/trails/Trail_Aura_DPS_en.ddsconst = particles/trails/Trail_Aura_DPS_en.dds
50attackerDamageTakenMultiplier - per-second damage scalar applied to incoming aircraft. 3 discrete values: 0.020, 0.028, 0.035. PC field name candidate from FilteredShip Data2Json/filters/Aircraft.py:AIRCRAFT_KEYS.mapped0.028[0.02 – 0.035], med 0.028 · 3 distinct
51game-logic constantconstant50const = 50.0
52aura type ('near' / 'medium' / 'far')mappedmedium3 distinct
53asset / particle pathvisualparticles/Empty_FX.xmlconst = particles/Empty_FX.xml
Radars 2 slots · 0 mapped (0%) · 1 constant · 0 visual · 1 sub-entity · 0 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0game-logic constantconstant1const = 1.0
1reference to another entitysub-entity→ sub-entity191 distinct

Mobility

Engine 15 slots · 13 mapped (87%) · 0 constant · 0 visual · 2 sub-entity · 0 need ID example: Module AB2_Engine (Engine)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entity661 distinct
1forwardEngineForsag - forward engine boost constant (~2.5). PC-aligned 2026-05.mapped2.5const = 2.5
2UNKNOWN - was guessed as forward spool-up time; PC alignment puts forwardEngineUpTime at state[9] instead. Needs identification.mapped9[5 – 15.05], med 9.7 · 115 distinct
3backwardEngineUpTime - reverse engine spool-up time (raw; the in-game displayed reverse spool-up is derived from it). PC-aligned 2026-05.mapped30[5 – 30], med 20 · 4 distinct · tracks class (r=0.77) · tracks nation (r=0.96)
4deceleration / drag coefficient Amapped-0.2[-0.5 – -0.15], med -0.2 · 4 distinct · tracks class (r=0.69) · tracks nation (r=0.96)
5deceleration / drag coefficient Bmapped-0.325[-0.325 – 0.5], med -0.26 · 4 distinct · tracks class (r=0.92) · tracks nation (r=0.98)
6backwardEngineForsag - reverse engine boost constant (PC counterpart to state[1] forwardEngineForsag). PERFECT class correlation: 5.5 = every cruiser (240 hulls), 6.5 = every BB + every DD (361 hulls), 7.0 = every CV (26 hulls). Class-tied because reverse boost is balanced per ship class. VERIFIED 2026-05-30.mapped6.5[5.5 – 7], med 6.5 · 3 distinct · tracks class (r=1.00) · tracks nation (r=0.98)
7Engine kinematic coefficient. 2.0 on 1256 ships (default); 1.75 on 112 ships - every UK destroyer (ukclassicdd), every UK light cruiser (uklightcr), every UK battlecruiser (ukbatlcr) except 1, every Pan-Am start-CL line (panamstartcl), every EU gunboat-DD (eugunboatdd), plus a few outliers. Clean partition: 1.75 marks the UK / newer-line engine spec.mapped2[1.75 – 2.5], med 2 · 3 distinct · tracks nation (r=0.93)
8powerThresholdKt - engine power-multiplier speed threshold (kt). VERIFIED 2026-05 in-game.mapped7[2.5 – 40.85], med 7 · 32 distinct · tracks nation (r=0.85)
9forwardEngineUpTime - forward engine spool-up time (raw; the in-game displayed spool-up is derived from it). PC-aligned 2026-05.mapped60[5 – 60], med 40 · 4 distinct · tracks class (r=0.69) · tracks nation (r=0.95)
10Drag / deceleration coefficient. -0.20 on 1004 ships (default); -0.15 on 348 ships; -0.50 on 8 specific premiums: California, Jean-Bart, Kleber, Lenin, Oland, Paolo-Emilio, Stalingrad, Z-35. The -0.50 outliers are mostly speed-boost-having premiums + the Kleber/Paolo-Emilio fast-DD line - likely a 'high-power engine' variant marker.mapped-0.2[-0.5 – -0.15], med -0.2 · 4 distinct · tracks class (r=0.62) · tracks nation (r=0.95)
11histEnginePower - engine power (hp). PC-aligned 2026-05.mapped163000[5 – 305000], med 80000 · 199 distinct
12engine logic class labelmappedGameLogic.Engines.Battleship.Turbine.Type_126 distinct · tracks nation (r=0.76)
13speedCoef - speed coefficient. PC-aligned 2026-05.mapped0[-0.17 – 0], med 0 · 16 distinct · tracks class (r=0.69) · tracks nation (r=0.75)
14reference to another entitysub-entity→ sub-entityconst = {}

Carrier aviation

AirArmament 7 slots · 5 mapped (71%) · 0 constant · 0 visual · 0 sub-entity · 2 need ID example: Module AB_AirArmament (AirArmament)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0Constant 1.0 sentinel across every ship that has an AirArmament module.mapped1const = 1.0
1needs identifyingneeds ID0[0 – 36], med 0 · 19 distinct · tracks caliber (r=0.57) · tracks nation (r=0.77)
2Constant False sentinel across every ship.mappedFalseconst = False
3Airstrike-specific flag. 0 on 532 ships (most); 2 on exactly 3 ships - Marblehead, Marblehead-FE, Yahagi - which have unique airstrike configurations. Likely an 'attackCount' or 'airstrike payload-tier' marker.mapped0[0 – 2], med 0 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.86) · tracks nation (r=0.97)
4Launch-platform type (string). 'catapult' (227 ships, traditional catapult-launched aircraft, mostly CA/BB); 'deck' (24 ships, flight-deck launch on CVs - Ark Royal, Enterprise, Furious, etc.); 'deckWithCatapult' (10 ships, hybrid CVs - Aki, Dewa, Ise, Graf Zeppelin); 'fake' (5 ships, Dutch cruisers de-7-provincien / de-zeven-provincien / gouden-leeuw / haarlem / vrijheid - they use the call-down AIRSTRIKE consumable instead of a physical catapult, so the module is virtual). VERIFIED 2026-05-31.mappedcatapult4 distinct · tracks nation (r=0.91)
5needs identifyingneeds ID0[0 – 116], med 0 · 16 distinct · tracks nation (r=0.80)
6Mount dict {HP_JC_N : GameParamData wrapping Catapult / airstrike mount}. Per-mount entity is the Catapult class.mapped→ sub-entity254 distinct
AirSupport 13 slots · 0 mapped (0%) · 5 constant · 0 visual · 1 sub-entity · 7 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID[1 – 3], med 1 · 3 distinct · tracks caliber (r=0.83) · tracks class (r=0.75) · tracks nation (r=0.50)
1game-logic constantconstant30const = 30.0
2game-logic constantconstant4const = 4.0
3needs identifyingneeds ID3 distinct · tracks caliber (r=0.67) · tracks class (r=0.75) · tracks nation (r=1.00)
4needs identifyingneeds ID[10000 – 14500], med 12500 · 12 distinct
5needs identifyingneeds ID[2500 – 4000], med 3500 · 4 distinct · tracks caliber (r=0.50) · tracks class (r=0.75) · tracks nation (r=1.00)
6needs identifyingneeds ID[1000 – 1500], med 1500 · 2 distinct · tracks caliber (r=1.00) · tracks class (r=0.75) · tracks nation (r=0.75)
7needs identifyingneeds ID25 distinct
8needs identifyingneeds ID[54 – 120], med 90 · 9 distinct
9game-logic constantconstant5const = 5.0
10game-logic constantconstant4const = 4.0
11game-logic constantconstant0.0, 90.0const = [0.0, 90.0]
12reference to another entitysub-entity→ sub-entityconst = {}
FlightControl 10 slots · 0 mapped (0%) · 6 constant · 0 visual · 3 sub-entity · 1 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entityconst = {'Skip': 0, 'Dive': 0, 'Bomber': 0, 'Fig…
1game-logic constantconstantconst = []
2reference to another entitysub-entity→ sub-entityconst = {'Scout': 0, 'Fighter': 1}
3game-logic constantconstantconst = []
4game-logic constantconstantFalseconst = False
5game-logic constantconstantFalseconst = False
6game-logic constantconstantFalseconst = False
7reference to another entitysub-entity→ sub-entityconst = {'Fighter': 1, 'Auxiliary': 0, 'Skip': 1…
8game-logic constantconstant1const = 1.0
9needs identifyingneeds ID3 distinct · tracks nation (r=0.67)
AircraftType 1 slots · 0 mapped (0%) · 0 constant · 0 visual · 0 sub-entity · 1 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID64 distinct
DiveBomber 277 slots · 6 mapped (2%) · 172 constant · 17 visual · 19 sub-entity · 63 need ID example: PGAF904_BF109G_HIDE (DiveBomber)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entityconst = {'_class': 'SectionCollection', '_repr':…
1reference to another entitysub-entity→ sub-entityconst = {'_class': 'PlaneAbilities', '_repr': '<…
2needs identifyingneeds ID180[40.7 – 180], med 180 · 4 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.97)
3reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.001, 0.005, 1.5, 1.75], 'pitc…
4needs identifyingneeds ID1.4[1.2625 – 1.4], med 1.4 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
5game-logic constantconstant1const = 1.0
6game-logic constantconstant1const = 1.0
7game-logic constantconstant1const = 1.0
8needs identifyingneeds ID-0.2[-0.2 – -0.15], med -0.2 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
9game-logic constantconstant0.1const = 0.10000000149011612
10needs identifyingneeds ID2.0, 0.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
11needs identifyingneeds ID1.0, 0.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
12needs identifyingneeds ID2.0, 0.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
13needs identifyingneeds ID0.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
14needs identifyingneeds ID0.0, -1.5, 0.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
15game-logic constantconstant0.5, 0.5const = [0.5, 0.5]
16needs identifyingneeds ID0.0, 2.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
17reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
18needs identifyingneeds ID1000[7.5 – 1000], med 1000 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
19game-logic constantconstant0.5const = 0.5
20needs identifyingneeds ID0.5, 1.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
21needs identifyingneeds ID15[5 – 15], med 15 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
22needs identifyingneeds ID1[0.4 – 1], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
23needs identifyingneeds ID0.3[0.3 – 0.4], med 0.3 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
24game-logic constantconstant1const = 1.0
25asset / particle pathvisualparticles/airplanes/Air_break.xmlconst = particles/airplanes/Air_break.xml
26asset / particle pathvisualparticles/airplanes/Air_brokenParts.xmlconst = particles/airplanes/Air_brokenParts.xml
27game-logic constantconstantparticles/airplanes/Air_death_1.xml, particles…const = ['particles/airplanes/Air_death_1.xml', …
28game-logic constantconstantparticles/airplanes/Air_explosion_1.xml, parti…const = ['particles/airplanes/Air_explosion_1.xm…
29game-logic constantconstantparticles/airplanes/Air_explosion_1.xml, parti…const = ['particles/airplanes/Air_explosion_1.xm…
30asset / particle pathvisualparticles/airplanes/Air_state_4_fire.xmlconst = particles/airplanes/Air_state_4_fire.xml
31asset / particle pathvisualparticles/airplanes/Air_gunfire.xmlconst = particles/airplanes/Air_gunfire.xml
32asset / particle pathvisualparticles/airplanes/Air_hit_1.xmlconst = particles/airplanes/Air_hit_1.xml
33game-logic constantconstantparticles/airplanes/Air_state_1_smoke.xml, par…const = ['particles/airplanes/Air_state_1_smoke.…
34needs identifyingneeds ID45[35 – 45], med 45 · 2 distinct · tracks caliber (r=0.71) · tracks nation (r=0.94)
35game-logic constantconstant-45const = -45.0
36needs identifyingneeds ID17.5[17.5 – 20], med 17.5 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
37game-logic constantconstant0const = 0.0
38game-logic constantconstant5const = 5.0
39needs identifyingneeds ID1[1 – 4], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
40game-logic constantconstant1const = 1.0
41needs identifyingneeds ID1[0.03 – 1], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
42reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
43game-logic constantconstant1const = 1.0
44game-logic constantconstant1const = 1.0
45needs identifyingneeds ID1[1 – 3], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
46game-logic constantconstant0.3const = 0.30000001192092896
47game-logic constantconstant0.3const = 0.30000001192092896
48game-logic constantconstantPAPB104_Langley_stockconst = PAPB104_Langley_stock
49game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
50game-logic constantconstant2.75, 2.75const = [2.75, 2.75]
51game-logic constantconstant0.6000000238418579, 0.6000000238418579const = [0.6000000238418579, 0.6000000238418579]
52game-logic constantconstant2.75, 2.75const = [2.75, 2.75]
53game-logic constantconstant70const = 70.0
54game-logic constantconstant70const = 70.0
55needs identifyingneeds ID20[20 – 34], med 20 · 7 distinct · tracks nation (r=0.74)
56needs identifyingneeds ID20[20 – 34], med 20 · 7 distinct · tracks nation (r=0.74)
57game-logic constantconstant30const = 30.0
58game-logic constantconstant30const = 30.0
59game-logic constantconstant0.01const = 0.009999999776482582
60game-logic constantconstant0.01const = 0.009999999776482582
61game-logic constantconstant20const = 20.0
62game-logic constantconstant0.7const = 0.699999988079071
63game-logic constantconstant0.7const = 0.699999988079071
64game-logic constantconstant20const = 20.0
65game-logic constantconstant20const = 20.0
66game-logic constantconstant30const = 30.0
67game-logic constantconstant30const = 30.0
68game-logic constantconstant40const = 40.0
69game-logic constantconstant40const = 40.0
70game-logic constantconstant30const = 30.0
71game-logic constantconstant30const = 30.0
72game-logic constantconstant0.1const = 0.10000000149011612
73game-logic constantconstant0.1const = 0.10000000149011612
74game-logic constantconstant0.7const = 0.699999988079071
75game-logic constantconstant1const = 1.0
76game-logic constantconstant1const = 1.0
77game-logic constantconstant0const = 0
78reference to another entitysub-entity→ sub-entityconst = {'_list_len': 3, '_repr': "[('stub', 'py…
79game-logic constantconstant-0const = -0.0
80game-logic constantconstant0const = 0.0
81game-logic constantconstant120const = 120.0
82game-logic constantconstant3const = 3.0
83needs identifyingneeds ID1[1 – 3], med 1 · 3 distinct · tracks nation (r=0.97)
84reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.001, 0.005, 1.0, 1.25], 'pitc…
85game-logic constantconstant0.8const = 0.800000011920929
86game-logic constantconstant0.30000001192092896, 1.0const = [0.30000001192092896, 1.0]
87game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
88game-logic constantconstant0.30000001192092896, 1.0const = [0.30000001192092896, 1.0]
89game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
90game-logic constantconstant0.0, -0.5, 0.0, 1.0const = [0.0, -0.5, 0.0, 1.0]
91game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
92game-logic constantconstant0.0, 3.5, 0.5const = [0.0, 3.5, 0.5]
93game-logic constantconstantconst =
94game-logic constantconstant0.25const = 0.25
95game-logic constantconstant0.75const = 0.75
96game-logic constantconstant0.0, 1.5const = [0.0, 1.5]
97game-logic constantconstant1.25, 3.0const = [1.25, 3.0]
98game-logic constantconstant-2.0, 1.5const = [-2.0, 1.5]
99game-logic constantconstant2.5, 2.0const = [2.5, 2.0]
100game-logic constantconstant0.0, -10.0, 10.0, 0.5const = [0.0, -10.0, 10.0, 0.5]
101game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
102game-logic constantconstant0.0, 3.5, 0.5const = [0.0, 3.5, 0.5]
103game-logic constantconstant1const = 1.0
104game-logic constantconstant1.2const = 1.2000000476837158
105game-logic constantconstant0.66const = 0.6600000262260437
106game-logic constantconstant0.66const = 0.6600000262260437
107game-logic constantconstant1const = 1.0
108asset / particle pathvisualparticles/airplanes/Air_state_3_fire.xmlconst = particles/airplanes/Air_state_3_fire.xml
109asset / particle pathvisualparticles/airplanes/Air_enginelight.xmlconst = particles/airplanes/Air_enginelight.xml
110game-logic constantconstantStandardconst = Standard
111game-logic constantconstant90const = 90.0
112game-logic constantconstant90const = 90.0
113game-logic constantconstant50const = 50.0
114game-logic constantconstant100const = 100.0
115game-logic constantconstant30const = 30.0
116needs identifyingneeds ID120[100 – 120], med 120 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.97)
117game-logic constantconstant130const = 130.0
118needs identifyingneeds ID108[100 – 108], med 108 · 2 distinct · tracks caliber (r=0.57) · tracks class (r=0.71) · tracks nation (r=1.00)
119game-logic constantconstantPCPP002_Default_Fighterconst = PCPP002_Default_Fighter
120game-logic constantconstantPCPP001_Default_Stormingconst = PCPP001_Default_Storming
121needs identifyingneeds ID45[35 – 45], med 45 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.94)
122needs identifyingneeds ID30[20 – 30], med 30 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.94)
123needs identifyingneeds ID10[10 – 30], med 10 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.94)
124game-logic constantconstant120const = 120.0
125needs identifyingneeds ID11[11 – 20], med 11 · 2 distinct · tracks nation (r=0.94)
126game-logic constantconstant40const = 40.0
127asset / particle pathvisualparticles/airplanes/Air_screen_fly.xmlconst = particles/airplanes/Air_screen_fly.xml
128reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('FightingRi…
129reference to another entitysub-entity→ sub-entity2 distinct
130game-logic constantconstant0const = 0.0
131game-logic constantconstant0const = 0.0
132asset / particle pathvisualparticles/airplanes/Air_forsage.xmlconst = particles/airplanes/Air_forsage.xml
133game-logic constantconstant0.5const = 0.5
134game-logic constantconstant0.5const = 0.5
135asset / particle pathvisualparticles/airplanes/Air_forsage_screen.xmlconst = particles/airplanes/Air_forsage_screen.x…
136game-logic constantconstant10const = 10.0
137needs identifyingneeds ID90[90 – 150], med 90 · 2 distinct · tracks nation (r=0.97)
138reference to another entitysub-entity→ sub-entityconst = {'_list_len': 5, '_repr': '[(0.0, 0.0), …
139game-logic constantconstantparticles/airplane_ground_destroy.xml, particl…const = ['particles/airplane_ground_destroy.xml'…
140reference to another entitysub-entity→ sub-entityconst = {'restoreAmount': 1, 'timeToRestore': 0.…
141reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.04, 0.06, 0.1, 0.2], 'duratio…
142game-logic constantconstant10const = 10.0
143game-logic constantconstant19const = 19.0
144needs identifyingneeds ID33.33[33.33 – 75], med 33.33 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
145needs identifyingneeds ID1.5, 2.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
146game-logic constantconstantFalseconst = False
147game-logic constantconstantTrueconst = True
148game-logic constantconstantTrueconst = True
149game-logic constantconstantconst =
150game-logic constantconstant0const = 0.0
151asset / particle pathvisualparticles/airplanes/Air_jato_smoke.xmlconst = particles/airplanes/Air_jato_smoke.xml
152game-logic constantconstant0const = 0.0
153asset / particle pathvisualparticles/airplanes/Air_jato_falling.xmlconst = particles/airplanes/Air_jato_falling.xml
154asset / particle pathvisualparticles/airplanes/Air_torpedo_ground_1.xmlconst = particles/airplanes/Air_torpedo_ground_1…
155game-logic constantconstant2const = 2.0
156asset / particle pathvisualparticles/airplanes/Air_torpedo_ground_1.xmlconst = particles/airplanes/Air_torpedo_ground_1…
157asset / particle pathvisualparticles/airplanes/Air_torpedo_drop.xmlconst = particles/airplanes/Air_torpedo_drop.xml
158game-logic constantconstant0.5const = 0.5
159reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('Landing_fo…
160game-logic constantconstant-4.0, 1.0const = [-4.0, 1.0]
161game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
162game-logic constantconstant0.30000001192092896, 1.0const = [0.30000001192092896, 1.0]
163game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
164game-logic constantconstant-0.20000000298023224, -0.5, 0.0, 1.0const = [-0.20000000298023224, -0.5, 0.0, 1.0]
165game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
166game-logic constantconstant0.0, 3.5, 0.5const = [0.0, 3.5, 0.5]
167needs identifyingneeds ID-0.4[-0.4 – 0], med -0.4 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
168needs identifyingneeds ID0.0001[0.0001 – 1.1], med 0.7 · 4 distinct · tracks caliber (r=0.57) · tracks class (r=0.57) · tracks nation (r=0.91)
169needs identifyingneeds ID7[2 – 7], med 7 · 2 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.94)
170needs identifyingneeds ID0.001[0.001 – 4], med 4 · 5 distinct · tracks nation (r=0.91)
171needs identifyingneeds ID8[4 – 10], med 8 · 7 distinct
172reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.04, 0.06, 0.1, 0.2], 'duratio…
173game-logic constantconstant210const = 210.0
174game-logic constantconstant1.4const = 1.399999976158142
175game-logic constantconstant5const = 5.0
176maxHealth - per-aircraft HP in the squadron.mapped1000[355 – 1000], med 1000 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
177needs identifyingneeds ID2[0.6 – 2], med 2 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
178game-logic constantconstant1const = 1.0
179game-logic constantconstant1const = 1.0
180game-logic constantconstant3, 3const = [3, 3]
181game-logic constantconstant10const = 10.0
182game-logic constantconstant10const = 10.0
183needs identifyingneeds ID0.1[0.1 – 0.6], med 0.1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
184game-logic constantconstant1, 1const = [1, 1]
185game-logic constantconstant10const = 10.0
186game-logic constantconstant10const = 10.0
187needs identifyingneeds IDcontent/gameplay/germany/aircraft/fighter/GAF0…59 distinct
188reference to another entitysub-entity→ sub-entityconst = {'_list_len': 15, '_repr': '[(1, 0.2), (…
189game-logic constantconstant0const = 0.0
190game-logic constantconstant0.1const = 0.10000000149011612
191game-logic constantconstant0.1const = 0.10000000149011612
192reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.005, 0.01, 0.25, 0.5], 'pitch…
193game-logic constantconstant190const = 190.0
194needs identifyingneeds ID2[0 – 2], med 1 · 3 distinct · tracks nation (r=0.85)
195game-logic constantconstant1const = 1.0
196numPlanesInSquadron - aircraft per squadron.mapped1[1 – 6], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
197game-logic constantconstant8const = 8.0
198game-logic constantconstant1const = 1.0
199game-logic constantconstant4const = 4.0
200needs identifyingneeds ID6.0, 15.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
201game-logic constantconstant5const = 5.0
202game-logic constantconstant200const = 200.0
203game-logic constantconstant1const = 1.0
204game-logic constantconstant0.5const = 0.5
205game-logic constantconstant1.3const = 1.2999999523162842
206game-logic constantconstantconst = []
207needs identifyingneeds ID4[2.66 – 4.83], med 4 · 11 distinct · tracks nation (r=0.74)
208needs identifyingneeds ID3[1.5 – 3], med 3 · 2 distinct · tracks caliber (r=0.71) · tracks nation (r=0.94)
209game-logic constantconstant3.5const = 3.5
210game-logic constantconstant1const = 1.0
211needs identifyingneeds ID-0.2[-0.2 – -0.18], med -0.2 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
212needs identifyingneeds ID0.1[0.1 – 0.35], med 0.1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
213needs identifyingneeds ID3.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
214needs identifyingneeds ID1.0, 0.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
215needs identifyingneeds ID3.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
216game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
217needs identifyingneeds ID0.0, -1.0, 0.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
218game-logic constantconstant0.75, 0.75const = [0.75, 0.75]
219needs identifyingneeds ID0.0, 1.0, 1.02 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
220needs identifyingneeds ID30[7.5 – 30], med 30 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
221game-logic constantconstant1.25const = 1.25
222needs identifyingneeds ID0.5, 1.52 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
223needs identifyingneeds ID1[1 – 2.5], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
224needs identifyingneeds ID1[0.75 – 1], med 1 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
225needs identifyingneeds ID0.3[0.3 – 0.75], med 0.3 · 2 distinct · tracks caliber (r=0.71) · tracks class (r=0.86) · tracks nation (r=0.94)
226game-logic constantconstant1const = 1
227game-logic constantconstant9999999const = 9999999.0
228game-logic constantconstant100const = 100.0
229game-logic constantconstant9999const = 9999.0
230game-logic constantconstant9999const = 9999.0
231game-logic constantconstant1.5const = 1.5
232game-logic constantconstant0.25const = 0.25
233game-logic constantconstant2const = 2.0
234game-logic constantconstant1const = 1.0
235game-logic constantconstant1000const = 1000.0
236game-logic constantconstant0.1const = 0.10000000149011612
237game-logic constantconstant360const = 360.0
238game-logic constantconstant0.5const = 0.5
239needs identifyingneeds ID170[90 – 235], med 148 · 33 distinct
240needs identifyingneeds ID170[90 – 235], med 148 · 33 distinct
241game-logic constantconstant1const = 1.0
242needs identifyingneeds ID170[74 – 235], med 148 · 33 distinct
243game-logic constantconstant80const = 80.0
244speedMax - squadron max speed.mapped1.5const = 1.5
245speedMin - squadron min speed.mapped0.8const = 0.800000011920929
246needs identifyingneeds ID170[90 – 235], med 148 · 33 distinct
247speedMoveWithBomb - speed while carrying ordnance.mapped245[136 – 260], med 222 · 34 distinct
248needs identifyingneeds ID170[60 – 235], med 147 · 30 distinct
249game-logic constantconstant4const = 4.0
250game-logic constantconstant1.5const = 1.5
251needs identifyingneeds ID1[1 – 9.66], med 1 · 11 distinct · tracks nation (r=0.74)
252needs identifyingneeds ID0[-16.5 – 0], med 0 · 4 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.97)
253game-logic constantconstant4const = 4.0
254game-logic constantconstant40.0, 40.0, 50.0const = [40.0, 40.0, 50.0]
255game-logic constantconstant10const = 10.0
256reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
257reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('USFighters…
258needs identifyingneeds ID600[132 – 600], med 600 · 14 distinct · tracks nation (r=0.74)
259attackCooldown - delay between attack runs (s).mapped500[4.9 – 500], med 500 · 4 distinct · tracks caliber (r=0.86) · tracks class (r=0.71) · tracks nation (r=0.97)
260game-logic constantconstantPCPP001_Default_Stormingconst = PCPP001_Default_Storming
261game-logic constantconstant0.1const = 0.10000000149011612
262game-logic constantconstant0.5const = 0.5
263game-logic constantconstant0.1const = 0.10000000149011612
264game-logic constantconstant100const = 100.0
265game-logic constantconstant45const = 45.0
266game-logic constantconstant98const = 98.0
267game-logic constantconstant14const = 14.0
268game-logic constantconstant98const = 98.0
269reference to another entitysub-entity→ sub-entityconst = {'_list_len': 9, '_repr': '[(0.01, 0.0, …
270game-logic constantconstant5const = 5.0
271game-logic constantconstant8const = 8.0
272game-logic constantconstant20const = 20.0
273game-logic constantconstant3const = 3.0
274game-logic constantconstantparticles/airplanes/Air_water_explosion_1.xml,…const = ['particles/airplanes/Air_water_explosio…
275asset / particle pathvisualparticles/airplane_water_effect.xmlconst = particles/airplane_water_effect.xml
276asset / particle pathvisualparticles/airplanes/Air_waterstep.xmlconst = particles/airplanes/Air_waterstep.xml
Plane 274 slots · 5 mapped (2%) · 207 constant · 17 visual · 19 sub-entity · 26 need ID example: PGAS955_BF109G_HIDE_spotter (Plane)
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entityconst = {'_class': 'SectionCollection', '_repr':…
1reference to another entitysub-entity→ sub-entityconst = {'_class': 'PlaneAbilities', '_repr': '<…
2game-logic constantconstant180const = 180.0
3reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.001, 0.005, 1.5, 1.75], 'pitc…
4game-logic constantconstant1.4const = 1.399999976158142
5game-logic constantconstant1const = 1.0
6game-logic constantconstant1const = 1.0
7game-logic constantconstant1const = 1.0
8game-logic constantconstant-0.2const = -0.20000000298023224
9game-logic constantconstant0.1const = 0.10000000149011612
10game-logic constantconstant2.0, 0.5const = [2.0, 0.5]
11game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
12game-logic constantconstant2.0, 0.5const = [2.0, 0.5]
13game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
14game-logic constantconstant0.0, -1.5, 0.0, 1.0const = [0.0, -1.5, 0.0, 1.0]
15game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
16game-logic constantconstant0.0, 2.0, 1.0const = [0.0, 2.0, 1.0]
17reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
18game-logic constantconstant1000const = 1000.0
19game-logic constantconstant2const = 2.0
20game-logic constantconstant0.5, 1.5const = [0.5, 1.5]
21game-logic constantconstant15const = 15.0
22game-logic constantconstant1const = 1.0
23game-logic constantconstant0.3const = 0.30000001192092896
24game-logic constantconstant1const = 1.0
25asset / particle pathvisualparticles/airplanes/Air_break.xmlconst = particles/airplanes/Air_break.xml
26asset / particle pathvisualparticles/airplanes/Air_brokenParts.xmlconst = particles/airplanes/Air_brokenParts.xml
27game-logic constantconstantparticles/airplanes/Air_death_1.xml, particles…const = ['particles/airplanes/Air_death_1.xml', …
28game-logic constantconstantparticles/airplanes/Air_explosion_1.xml, parti…const = ['particles/airplanes/Air_explosion_1.xm…
29game-logic constantconstantparticles/airplanes/Air_explosion_1.xml, parti…const = ['particles/airplanes/Air_explosion_1.xm…
30asset / particle pathvisualparticles/airplanes/Air_state_4_fire.xmlconst = particles/airplanes/Air_state_4_fire.xml
31asset / particle pathvisualparticles/airplanes/Air_gunfire.xmlconst = particles/airplanes/Air_gunfire.xml
32asset / particle pathvisualparticles/airplanes/Air_hit_1.xmlconst = particles/airplanes/Air_hit_1.xml
33game-logic constantconstantparticles/airplanes/Air_state_1_smoke.xml, par…const = ['particles/airplanes/Air_state_1_smoke.…
34needs identifyingneeds ID35[35 – 45], med 35 · 2 distinct · tracks caliber (r=0.60) · tracks class (r=0.50) · tracks nation (r=0.93)
35game-logic constantconstant-45const = -45.0
36game-logic constantconstantconst = None
37game-logic constantconstant0const = 0.0
38attackCooldown - delay between attack runs (s).mapped5const = 5.0
39game-logic constantconstant1const = 1
40game-logic constantconstant0const = 0.0
41game-logic constantconstant1const = 1.0
42reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
43game-logic constantconstant2.5const = 2.5
44game-logic constantconstant1const = 1.0
45game-logic constantconstant1const = 1
46game-logic constantconstant0.3const = 0.30000001192092896
47game-logic constantconstant0.3const = 0.30000001192092896
48Aircraft payload ID - the Bomb / Torpedo / Rocket entity this aircraft drops. Read by the spec reader:1168 to resolve airstrike / CV-squadron payloads. PC field name candidate: `bombName` or `payload`.mappedconst =
49game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
50game-logic constantconstant2.75, 2.75const = [2.75, 2.75]
51game-logic constantconstant0.6000000238418579, 0.6000000238418579const = [0.6000000238418579, 0.6000000238418579]
52game-logic constantconstant2.75, 2.75const = [2.75, 2.75]
53game-logic constantconstant70const = 70.0
54game-logic constantconstant70const = 70.0
55game-logic constantconstant20const = 20.0
56game-logic constantconstant20const = 20.0
57game-logic constantconstant30const = 30.0
58game-logic constantconstant30const = 30.0
59game-logic constantconstant0.01const = 0.009999999776482582
60game-logic constantconstant0.01const = 0.009999999776482582
61game-logic constantconstant20const = 20.0
62game-logic constantconstant0.7const = 0.699999988079071
63game-logic constantconstant0.7const = 0.699999988079071
64game-logic constantconstant20const = 20.0
65game-logic constantconstant20const = 20.0
66game-logic constantconstant30const = 30.0
67game-logic constantconstant30const = 30.0
68game-logic constantconstant40const = 40.0
69game-logic constantconstant40const = 40.0
70game-logic constantconstant30const = 30.0
71game-logic constantconstant30const = 30.0
72game-logic constantconstant0.1const = 0.10000000149011612
73game-logic constantconstant0.1const = 0.10000000149011612
74game-logic constantconstant0.7const = 0.699999988079071
75game-logic constantconstant1const = 1.0
76game-logic constantconstant1const = 1.0
77game-logic constantconstant0const = 0
78reference to another entitysub-entity→ sub-entityconst = {'_list_len': 3, '_repr': "[('stub', 'py…
79game-logic constantconstant-0const = -0.0
80game-logic constantconstant0const = 0.0
81game-logic constantconstant120const = 120.0
82game-logic constantconstant3const = 3.0
83game-logic constantconstant2.5const = 2.5
84reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.001, 0.005, 1.0, 1.25], 'pitc…
85game-logic constantconstant0.8const = 0.800000011920929
86game-logic constantconstant0.30000001192092896, 1.0const = [0.30000001192092896, 1.0]
87game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
88game-logic constantconstant0.30000001192092896, 1.0const = [0.30000001192092896, 1.0]
89game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
90game-logic constantconstant0.0, -0.5, 0.0, 1.0const = [0.0, -0.5, 0.0, 1.0]
91game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
92game-logic constantconstant0.0, 3.5, 0.5const = [0.0, 3.5, 0.5]
93game-logic constantconstantconst =
94game-logic constantconstant0.25const = 0.25
95game-logic constantconstant0.75const = 0.75
96game-logic constantconstant1.0, 2.0const = [1.0, 2.0]
97game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
98game-logic constantconstant1.0, 2.0const = [1.0, 2.0]
99game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
100game-logic constantconstant0.0, -10.0, 10.0, 0.5const = [0.0, -10.0, 10.0, 0.5]
101game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
102game-logic constantconstant0.0, 3.5, 0.5const = [0.0, 3.5, 0.5]
103game-logic constantconstant1const = 1.0
104game-logic constantconstant1.2const = 1.2000000476837158
105game-logic constantconstant0.66const = 0.6600000262260437
106game-logic constantconstant0.66const = 0.6600000262260437
107game-logic constantconstant1const = 1.0
108asset / particle pathvisualparticles/airplanes/Air_state_3_fire.xmlconst = particles/airplanes/Air_state_3_fire.xml
109asset / particle pathvisualparticles/airplanes/Air_enginelight.xmlconst = particles/airplanes/Air_enginelight.xml
110needs identifyingneeds IDStandard2 distinct · tracks caliber (r=0.80) · tracks class (r=0.75) · tracks nation (r=0.86)
111game-logic constantconstant90const = 90.0
112game-logic constantconstant90const = 90.0
113game-logic constantconstant50const = 50.0
114game-logic constantconstant100const = 100.0
115game-logic constantconstant30const = 30.0
116game-logic constantconstant120const = 120.0
117game-logic constantconstant130const = 130.0
118needs identifyingneeds ID100[100 – 141], med 141 · 2 distinct · tracks nation (r=0.86)
119game-logic constantconstantconst =
120game-logic constantconstantPCPP001_Default_Stormingconst = PCPP001_Default_Storming
121game-logic constantconstant45const = 45.0
122game-logic constantconstant30const = 30.0
123game-logic constantconstant10const = 10.0
124game-logic constantconstant120const = 120.0
125needs identifyingneeds ID30[14 – 30], med 14 · 2 distinct · tracks class (r=0.50) · tracks nation (r=0.86)
126needs identifyingneeds ID100[40 – 100], med 100 · 2 distinct · tracks class (r=0.50) · tracks nation (r=0.93)
127asset / particle pathvisualparticles/airplanes/Air_screen_fly.xmlconst = particles/airplanes/Air_screen_fly.xml
128reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
129reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('DveTroiki'…
130game-logic constantconstant0const = 0.0
131game-logic constantconstant0const = 0.0
132asset / particle pathvisualparticles/airplanes/Air_forsage.xmlconst = particles/airplanes/Air_forsage.xml
133game-logic constantconstant0.5const = 0.5
134game-logic constantconstant0.5const = 0.5
135asset / particle pathvisualparticles/airplanes/Air_forsage_screen.xmlconst = particles/airplanes/Air_forsage_screen.x…
136game-logic constantconstant10const = 10.0
137needs identifyingneeds ID90[90 – 180], med 90 · 2 distinct · tracks caliber (r=0.60) · tracks class (r=0.75) · tracks nation (r=0.93)
138reference to another entitysub-entity→ sub-entityconst = {'_list_len': 5, '_repr': '[(0.0, 0.0), …
139game-logic constantconstantparticles/airplane_ground_destroy.xml, particl…const = ['particles/airplane_ground_destroy.xml'…
140reference to another entitysub-entity→ sub-entityconst = {'restoreAmount': 1, 'timeToRestore': 0.…
141reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.04, 0.06, 0.1, 0.2], 'duratio…
142game-logic constantconstant10const = 10.0
143game-logic constantconstant19const = 19.0
144game-logic constantconstantFalseconst = False
145game-logic constantconstantTrueconst = True
146game-logic constantconstantTrueconst = True
147game-logic constantconstantconst =
148game-logic constantconstant0const = 0.0
149asset / particle pathvisualparticles/airplanes/Air_jato_smoke.xmlconst = particles/airplanes/Air_jato_smoke.xml
150game-logic constantconstant0const = 0.0
151asset / particle pathvisualparticles/airplanes/Air_jato_falling.xmlconst = particles/airplanes/Air_jato_falling.xml
152asset / particle pathvisualparticles/airplanes/Air_torpedo_ground_1.xmlconst = particles/airplanes/Air_torpedo_ground_1…
153game-logic constantconstant2const = 2.0
154asset / particle pathvisualparticles/airplanes/Air_torpedo_ground_1.xmlconst = particles/airplanes/Air_torpedo_ground_1…
155asset / particle pathvisualparticles/airplanes/Air_torpedo_drop.xmlconst = particles/airplanes/Air_torpedo_drop.xml
156game-logic constantconstant0.5const = 0.5
157reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('Landing_fo…
158game-logic constantconstant-4.0, 1.0const = [-4.0, 1.0]
159game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
160game-logic constantconstant0.30000001192092896, 1.0const = [0.30000001192092896, 1.0]
161game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
162game-logic constantconstant-0.20000000298023224, -0.5, 0.0, 1.0const = [-0.20000000298023224, -0.5, 0.0, 1.0]
163game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
164game-logic constantconstant0.0, 3.5, 0.5const = [0.0, 3.5, 0.5]
165game-logic constantconstant-0.4const = -0.4000000059604645
166needs identifyingneeds ID0.0001[0.0001 – 0.7], med 0.1 · 3 distinct · tracks class (r=0.50) · tracks nation (r=0.79)
167needs identifyingneeds ID7[2 – 7], med 2 · 2 distinct · tracks class (r=0.50) · tracks nation (r=0.86)
168needs identifyingneeds ID0.001[0.001 – 4], med 4 · 3 distinct · tracks caliber (r=0.60) · tracks class (r=0.75) · tracks nation (r=0.86)
169needs identifyingneeds ID7[5 – 9], med 7 · 5 distinct · tracks class (r=0.50) · tracks nation (r=0.71)
170reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.04, 0.06, 0.1, 0.2], 'duratio…
171game-logic constantconstant210const = 210.0
172game-logic constantconstant1.4const = 1.399999976158142
173game-logic constantconstant20const = 20.0
174needs identifyingneeds ID950[950 – 1000], med 1000 · 2 distinct · tracks nation (r=0.86)
175needs identifyingneeds ID0.1[0.1 – 2], med 2 · 2 distinct · tracks nation (r=0.86)
176game-logic constantconstant1const = 1.0
177game-logic constantconstant1const = 1.0
178game-logic constantconstant0const = 0
179game-logic constantconstant10const = 10.0
180game-logic constantconstant10const = 10.0
181game-logic constantconstant0.1const = 0.10000000149011612
182game-logic constantconstant0const = 0
183game-logic constantconstant10const = 10.0
184game-logic constantconstant10const = 10.0
185needs identifyingneeds IDcontent/gameplay/germany/aircraft/fighter/GAF0…27 distinct
186reference to another entitysub-entity→ sub-entityconst = {'_list_len': 15, '_repr': '[(1, 0.2), (…
187game-logic constantconstant0const = 0.0
188game-logic constantconstant0.1const = 0.10000000149011612
189game-logic constantconstant0.1const = 0.10000000149011612
190reference to another entitysub-entity→ sub-entityconst = {'yaw': [0.005, 0.01, 0.25, 0.5], 'pitch…
191game-logic constantconstant190const = 190.0
192needs identifyingneeds ID2[1 – 2], med 1 · 2 distinct · tracks caliber (r=0.60) · tracks class (r=0.75) · tracks nation (r=0.79)
193game-logic constantconstant1const = 1.0
194numPlanesInSquadron - aircraft per squadron.mapped1const = 1
195game-logic constantconstant8const = 8.0
196game-logic constantconstant1const = 1.0
197game-logic constantconstant4const = 4.0
198game-logic constantconstant5const = 5.0
199game-logic constantconstant100const = 100.0
200game-logic constantconstant1const = 1.0
201game-logic constantconstant0.5const = 0.5
202game-logic constantconstant1.3const = 1.2999999523162842
203game-logic constantconstantconst = []
204needs identifyingneeds ID4[2.85 – 4], med 3.28 · 11 distinct · tracks nation (r=0.71)
205game-logic constantconstant3const = 3.0
206game-logic constantconstant3.5const = 3.5
207game-logic constantconstant1const = 1.0
208game-logic constantconstant-0.2const = -0.20000000298023224
209game-logic constantconstant0.1const = 0.10000000149011612
210game-logic constantconstant3.0, 1.0const = [3.0, 1.0]
211game-logic constantconstant1.0, 0.5const = [1.0, 0.5]
212game-logic constantconstant3.0, 1.0const = [3.0, 1.0]
213game-logic constantconstant0.0, 1.0const = [0.0, 1.0]
214game-logic constantconstant0.0, -1.0, 0.0, 1.0const = [0.0, -1.0, 0.0, 1.0]
215game-logic constantconstant1.0, 1.0const = [1.0, 1.0]
216game-logic constantconstant0.0, 1.0, 1.0const = [0.0, 1.0, 1.0]
217game-logic constantconstant30const = 30.0
218game-logic constantconstant1.5const = 1.5
219game-logic constantconstant0.5, 1.5const = [0.5, 1.5]
220game-logic constantconstant1const = 1.0
221game-logic constantconstant1const = 1.0
222game-logic constantconstant0.3const = 0.30000001192092896
223game-logic constantconstant1const = 1
224game-logic constantconstant9999999const = 9999999.0
225game-logic constantconstant100const = 100.0
226game-logic constantconstant9999const = 9999.0
227game-logic constantconstant9999const = 9999.0
228game-logic constantconstant1.5const = 1.5
229game-logic constantconstant0.25const = 0.25
230game-logic constantconstant2const = 2.0
231game-logic constantconstant1const = 1.0
232game-logic constantconstant1000const = 1000.0
233game-logic constantconstant0.1const = 0.10000000149011612
234game-logic constantconstant360const = 360.0
235game-logic constantconstant0.5const = 0.5
236needs identifyingneeds ID170[90 – 175], med 143 · 20 distinct · tracks nation (r=0.50)
237needs identifyingneeds ID170[90 – 175], med 143 · 21 distinct · tracks nation (r=0.50)
238needs identifyingneeds ID90[68 – 100], med 90 · 11 distinct · tracks nation (r=0.64)
239needs identifyingneeds ID170[90 – 170], med 143 · 19 distinct · tracks nation (r=0.50)
240game-logic constantconstant80const = 80.0
241speedMax - squadron max speed.mapped1.5const = 1.5
242speedMin - squadron min speed.mapped0.8const = 0.800000011920929
243needs identifyingneeds ID170[90 – 170], med 144 · 17 distinct · tracks nation (r=0.50)
244needs identifyingneeds ID170[90 – 242], med 144 · 19 distinct · tracks nation (r=0.50)
245needs identifyingneeds ID90[90 – 161], med 115 · 14 distinct · tracks nation (r=0.57)
246game-logic constantconstant4const = 4.0
247game-logic constantconstant1.25const = 1.25
248needs identifyingneeds ID7.96[5.7 – 7.96], med 6.56 · 12 distinct · tracks nation (r=0.71)
249game-logic constantconstant0const = 0.0
250game-logic constantconstant4const = 4.0
251game-logic constantconstant40.0, 40.0, 50.0const = [40.0, 40.0, 50.0]
252game-logic constantconstant10const = 10.0
253reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('WARD_forma…
254reference to another entitysub-entity→ sub-entityconst = {'_list_len': 2, '_repr': "(('USFighters…
255game-logic constantconstant600const = 600.0
256game-logic constantconstant500const = 500.0
257game-logic constantconstantconst =
258game-logic constantconstant0.1const = 0.10000000149011612
259game-logic constantconstant0.5const = 0.5
260game-logic constantconstant0.1const = 0.10000000149011612
261game-logic constantconstant100const = 100.0
262game-logic constantconstant45const = 45.0
263game-logic constantconstant98const = 98.0
264game-logic constantconstant14const = 14.0
265game-logic constantconstant98const = 98.0
266reference to another entitysub-entity→ sub-entityconst = {'_list_len': 9, '_repr': '[(0.01, 0.0, …
267game-logic constantconstant5const = 5.0
268needs identifyingneeds ID8[8 – 10], med 10 · 2 distinct · tracks class (r=0.50) · tracks nation (r=0.86)
269needs identifyingneeds ID20[15 – 20], med 15 · 2 distinct · tracks class (r=0.50) · tracks nation (r=0.86)
270needs identifyingneeds ID3[3 – 4], med 4 · 2 distinct · tracks class (r=0.50) · tracks nation (r=0.86)
271game-logic constantconstantparticles/airplanes/Air_water_explosion_1.xml,…const = ['particles/airplanes/Air_water_explosio…
272asset / particle pathvisualparticles/airplane_water_effect.xmlconst = particles/airplane_water_effect.xml
273asset / particle pathvisualparticles/airplanes/Air_waterstep.xmlconst = particles/airplanes/Air_waterstep.xml
Catapult 5 slots · 3 mapped (60%) · 0 constant · 0 visual · 0 sub-entity · 2 need ID example: ↳ AB_AirArmament.state[6]['HP_GC_2'].state[0] - Catapult
#Field / what we knowStatus Bismarck valueCatalog range · notes
0Catapult launch angle (degrees). 90 = perpendicular to ship's heading; varies by ship/mount.mapped0[-160 – 160], med 0 · 61 distinct
1needs identifyingneeds ID0[0 – 0.66], med 0 · 9 distinct · tracks nation (r=0.87)
2Catapult active flag (bool). True on the 44 ships whose catapult is actively usable (typically ships with catapult-fighter / spotter consumables); False on the 604 mounts where the catapult is decorative-only.mappedTrue2 distinct · tracks nation (r=0.83)
3Catapult model asset path. Per-nation distinct models (e.g. 'content/gameplay/japan/catapult/JC001_Catapult_Shiki2/JC001_Catapult_Shiki2.model' for IJN).mappedcontent/gameplay/germany/catapult/GC001_Catapu…70 distinct
4needs identifyingneeds ID0.1[0 – 12], med 1.25 · 13 distinct
ModelWithGunNode 4 slots · 0 mapped (0%) · 1 constant · 0 visual · 0 sub-entity · 3 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0needs identifyingneeds ID14 distinct · tracks class (r=0.50) · tracks nation (r=0.83)
1needs identifyingneeds ID13 distinct · tracks class (r=0.50) · tracks nation (r=0.77)
2game-logic constantconstantFalseconst = False
3needs identifyingneeds ID224 distinct

Other entities

Cap 2 slots · 0 mapped (0%) · 1 constant · 0 visual · 0 sub-entity · 1 need ID example: ↳ B_Hull.state[90]['HP_GGS_12_HP_GGA_1'] - Cap
#Field / what we knowStatus Bismarck valueCatalog range · notes
0game-logic constantconstantTrueconst = True
1needs identifyingneeds ID14 distinct · tracks nation (r=0.84)
TorpedoTube 28 slots · 13 mapped (46%) · 7 constant · 0 visual · 1 sub-entity · 7 need ID not on this ship
#Field / what we knowStatus Bismarck valueCatalog range · notes
0reference to another entitysub-entity→ sub-entity148 distinct
1needs identifyingneeds ID20 distinct · tracks nation (r=0.86)
2ammoList - torpedo projectile entity IDs this tube fires (PC field name confirmed via FilteredShip Data2Json/filters/Gun.py:TORPEDO_KEYS). Read by the spec reader as 'projectiles'.mapped320 distinct
3Arming-time map {hitLocationId : armingTime_s}. Constant {'65580': 6.0} across every captured ship - 6.0 seconds is the base arming time. The in-game spec-card 'Torp Arming (m)' display approximates `6.0 * torp_speed_mps` (Halland 86kt -> 265m vs displayed 261m; Brisbane 69kt -> 213m vs 215m; Castilla 62kt -> 191m vs 196m; residual +/-5m per-ship correction not yet isolated). 2026-05-31 after fixing the dumper's launcher-recursion gap.mapped→ sub-entity7 distinct · tracks nation (r=0.69)
4barrelDiameter (m; *1000 => mm)mapped[0.45 – 0.7], med 0.533 · 9 distinct · tracks nation (r=0.71)
5game-logic constantconstantconst = None
6dead-mesh model path (destroyed launcher visual).mapped148 distinct
7needs identifyingneeds ID158 distinct
8torpedoAngles - launch direction angles per tube (PC field name confirmed; read by extractor as 'launch_angles').mapped150 distinct
9game-logic constantconstantconst =
10rotationSpeed - horizontal traverse arc / rotation in deg (PC field name confirmed; read by extractor as 'traverse_arc_deg').mapped3 distinct · tracks caliber (r=0.86) · tracks class (r=0.89) · tracks nation (r=0.97)
11needs identifyingneeds ID24 distinct
12needs identifyingneeds ID2 distinct · tracks caliber (r=0.86) · tracks class (r=0.89) · tracks nation (r=0.97)
13mount model path (intact launcher visual).mapped148 distinct
14needs identifyingneeds ID2 distinct · tracks caliber (r=0.86) · tracks class (r=0.89) · tracks nation (r=0.97)
15numAmmos (ready-rack torpedo count)mapped1000const = 1000
16numBarrels (tubes on this launcher)mapped[1 – 6], med 3 · 6 distinct
17needs identifyingneeds ID102 distinct
18Constant [25.0, 25.0] across every captured launcher.mapped3 distinct · tracks nation (r=0.91)
19reload time (s)mapped[12 – 171], med 88 · 86 distinct
20needs identifyingneeds ID2 distinct
21game-logic constantconstantconst = None
22timeBetweenShots (s, intra-salvo)mapped0.2const = 0.20000000298023224
23game-logic constantconstant1const = 1
24game-logic constantconstant1const = 1
25Two-element spread/timing pair: [narrow_mode_t, wide_mode_t] candidate. Per ship: Halland [3.0, 6.0] (5-tube DD launcher), Brisbane [2.4, 6.0] (5-tube), Castilla [6.0, 20.0] (5-tube CA), Jinan [6.0, 20.0] (5-tube CL), Venezia [3.6, 12.0] (3-tube CA), Vampire-II [3.6, 6.0] (5-tube). Second element always >= first; the spread between values likely controls narrow-vs-wide torpedo aiming-arc behavior.mapped19 distinct
26game-logic constantconstantconst = None
27game-logic constantconstant0.0, 1.0const = [0.0, 1.0]