# ✅ The STATIC weapon datasheet — `Weapon`, `Shell`, `AssortMissileParam` The corpus's weapon numbers came from a **runtime capture** ([weapon-datasheet-runtime](../weapon-datasheet-runtime.md), [weapon-struct-runtime](weapon-struct-runtime.md)). The static tables behind them are now located and read, with no emulator involved. ## How they were found Not by guessing a filename. **IDXD field names are literal strings in the string pool**, so the stat-shaped keys already harvested from the disassembly (`data/config-keys.txt` — `MegaTons`, `GuidanceType`, `SpiralType`, `Straight1Type`, `BulletLimit`, `CrewCount`, `HP_CLASS`, …) can be searched directly across every record on the disc. 8 648 records carry at least one, and they cluster on three record names. ## What is there | record | per pak | fields | what it is | |---|---|---|---| | `Weapon` | **131** | 21 | the launcher — rate of fire, heat, ammo, SE/FX | | `Shell` | **131** | 37 | the projectile — damage, ballistics, collision, FX | | `AssortMissileParam` | **9** | 20 | missile guidance tuning | 131 `Weapon` and 131 `Shell` records, one-to-one, in **each** of the per-language `GP_MAIN_GAME_*.pak` files; a weapon and its shell share a pak entry. Note this is **131**, not the 59 of the `WEAPONS` name roster — the roster is the *arsenal menu's* list, not the full set. ### `Weapon` (sample: `Weapon_TCAF_DeltaSaber_Rocket_P`) ``` ID / Name Weapon_TCAF_DeltaSaber_Rocket_P TargetType Vessel,Craft,Structure ShotType Single ReticleType 5 HitRatio 1.0 SprayAngle 4.0 Interval 1.0 ReadyInterval 0.0 TriggerShotCount 1 TriggerShotInterval 0.1 LoadingCount 1000 Heating 0.00 Cooling 0.10 Mass 100 SpecialWeaponType 0 ShootSE / ReadySE / FinishSE, MuzzleFlashFxModel_Loop / _OneShot ``` ### `Shell` (sample: `Shell_TCAF_DeltaSaber_Rocket_P`) ``` Power 100.0 DamageType Shell FailedDamageRatio 1.0 Velocity 3000.0 Acceleration 0.0 AngularVelocity 0.0 MinimumVelocity / MaximumVelocity 0.0 MinimumRange 10.0 MaximumRange 6000.0 LifeTime 3.0 CollisionType Capsule Radius 30.0 Length 10.0 Volume 10.0 ShellMass 0.005 HP 0.0 MovementType Shell IsGravitated Yes IsDestructible No IsLockable No IsFullCollision No IsFixedModel Yes ShellModel wep_t085 Color_R/G/B 1.0 / 0.85 / 0.7 HitFxModel eff_h000 HitFxInEnd Yes ContrailFxFrame GN_Trc_01 JetFxModel / JetFxFrame, HitSE_Damage / HitSE_NoDamage, ThrusterSE ``` `MaximumRange 6000.0` with the corpus's **world unit = 1 metre** makes this a 6 km rocket; `Velocity 3000.0` is 3 km/s. ### `AssortMissileParam` — the guidance model ``` GuidanceType 0 SpiralType 1 Straight1Type 1 Straight2Type 0 st1_df_aperture 0.5 st1_up_aperture 1.0 st1_up_bias_pow 0.5 st1_df_pitch 10 sp_sp_round_time 0.35 … 0.5 sp_sp_spiral_pow 0.05 … 0.1 sp_qu_cycle_time 0.6 … 1.2 sp_qu_bias_pow 0.35 … 0.65 sp_zg_cycle 0.2 … 0.4 sp_zg_bias 0.1 … 0.3 ``` Three named motion modes with min/max ranges — `sp` spiral, `qu` quick-turn, `zg` zig-zag — plus a straight-flight aperture and pitch. Nine variants ship. ## 🔴 And a controlled negative: `stageNN_settings.tbl` does not exist `AUTO_SETTINGS` names 28 files `stage01_settings.tbl` … `stage29_settings.tbl`. Probing pak entry names (`name_hash`) with **four** path prefixes — bare, `stage\`, `arsenal\`, `dat\` — finds **0 of 116**, while the two controls in the same loop (`stage\UnitGroup_S02.tbl`, `stage\AIParams_S02.tbl`) are **both found**. So the reader and prefix convention are right and those files are simply not on the disc — the same shape as `STAGENN_UNIT_MAX`. ## 🟡 Not settled * Whether the 131 `Weapon` records reconcile with the runtime capture field by field — this locates and reads the table; it does not cross-check it. * The other stat keys (`MegaTons`, `BulletLimit`, `CrewCount`, `HP_CLASS`, `HPGauge`, `WEAPON_CATEGORIES`) belong to records not opened here. * Why the arsenal roster lists 59 of the 131 weapons.