A cross-platform (Avalonia/.NET) reimagining of Victor's 2013 "'Jack Converter"
(Warmachine to Iron Kingdoms d20 'Jack Converter, recovered by reverse-engineering the
original ClickOnce .NET assembly). Gritty steampunk "schematic review tool" GUI.
- PF1e — Pathfinder 1st Edition. Faithful port of the recovered 3.5-era logic (PF1 was
largely a 3.5 update). See
Conversion/Pf1Converter.cs. - PF2e — Pathfinder 2nd Edition. New system. Built by the benchmark-via-CR method
(Victor's choice): PF1 CR -> clamped creature level -> read Paizo "Building Creatures"
benchmark numbers by assigned High/Moderate/Low role. See
Conversion/Pf2Converter.cs,Conversion/Pf2Benchmarks.cs. - APF1e — Advanced PF1e. Victor's dream "box-out" system: HP spread across hit locations
(Head, Torso, 2 Arms, 2 Legs) like a WarMachine damage grid. See
Conversion/BoxOut.cs.
- APF1e HP split: fixed ruleset-wide percentages. Current constants (tunable in
BoxOutConverter): Head 12%, Torso 34%, each Arm 15%, each Leg 12%. Torso absorbs rounding. - Box-out consequences (formalized):
- Arm destroyed -> that arm's weapon unusable; both arms -> no melee.
- Leg destroyed -> Speed halved; both -> immobilized/prone.
- Head/Cortex destroyed -> 'jack inert (wrecked).
- Torso/Boiler destroyed -> wrecked + boiler explosion (Reflex save, AoE fire).
- Myrmidon Energy Field = temp HP, depleted before any location can be hit.
- Colossals = two structures (Left/Right); wrecked when both Torsos (or both Heads) gone.
- PF2e method: benchmark via CR.
- Exports: PF1e -> Foundry SBC (Paizo DEFENSE/OFFENSE/STATISTICS text,
Con —). PF2e -> Foundry pf2e-bestiary-import (bracketed action costs, blank-line separators, ability modifiers, construct immunities;Mindlessonly for cortex-less vectors).
- Box-out percentages (above).
- Boiler explosion: Light 6d6/10ft, Heavy 10d6/15ft, Colossal 20d6/20ft; DC = 10 + HD/2 + size.
- PF2e Hardness = clamp(ARM - 11, 3, 25).
- PF2e stat-role thresholds (Str/AC/attack tiers off WM stats) in
Pf2Converter.
The original formula is kept only as a displayed raw score. Pf1Converter.Calibrate derives the
playable CR from clean threat signals - chassis base (L5/H8/Col16) + hit-box adjustment + armor bump,
clamped to per-type bands (L 4-8, H 7-12, Col 15-21) - then draws AC/HP/attack/saves from Pathfinder's
Monster-Statistics-by-CR table (Pf1ByCr.cs). PF2e level = calibrated CR.
Earlier attempt (raw x 0.38) was replaced after full-roster validation: it inherited the original's
arc-node and Cyriss-vector inflation (Lancer CR10 vs identical Charger CR6; Prime Axiom CR22 > Stormwall).
The clean formula is immune to that. All 16 reference jacks validate (--validate): lights CR4-6,
heavies CR7-10, colossals CR16-17; Juggernaut==Destroyer; box-out HP sums exact.
- Energy Field values (33 light / 55 heavy, from the original tool) are now oversized vs recalibrated HP (Griffon: 33 field on 40 HP). Consider rescaling to ~30-40% of body HP (real-WM proportion).
- Field coverage: only Retribution jacks get one; Cyriss vectors (incl. colossal Prime Axiom) do not. Victor's vision mentioned "Myrmidon Colossals" having a field - decision pending.
- Reverse-engineer original (source saved to
Apps & Scripts/Jack/*.RECOVERED.cs) - Conversion engine: PF1e, PF2e, APF1e — verified via
JackForge.exe --selftest - Foundry exporters (SBC + bestiary-import)
- Steampunk GUI (3 icon tabs, shared input, IK logo header, Convert + Send-to-Foundry) — runs
- Recalibration to legal Pathfinder ranges (anchored to PF Monster-by-CR table)
- Box-out split retuned to real WM grid proportions (torso ~54%)
- Full-roster validation: all 16 real jacks pass (
--validate); caught + fixed node/vector CR inflation - Unique/character jacks: "Unique 'Jack?" toggle + manual CR adjustment (applies after band clamp, cascades to all tabs)
- Serric Steel = IK adamantine: export keeps clean
DR #/adamantine; flavor shown only in app readout - Energy Field: myrmidon-only, temp HP = jack HP rounded to nearest 10; per-myrmidon "Field Power" text field (special power active while the field holds), shown in the box-out
- Vector hover: per-vector dropdown (None / Clumsy / Average), shown for Cyriss vectors. Grants a low Fly speed = land Speed (ignores ground terrain) and +1 CR. Clumsy = light trimodal vectors; Average = purpose-built hovering vectors; heavy trimodal = None. Fly line flows to both exports.
- (Optional) "Induction Trait" text field for vectors — offered, not yet built
- Polish; self-contained publish per-OS
- Optional: pull official Iron Kingdoms d20 warjack stats as a second cross-check
cd src/JackForge
dotnet build
dotnet run # launches the app
dotnet run -- --selftest # headless engine check
Reference research (gitignored scratch): WarMachine test jacks, PF2e benchmarks, Foundry formats.