|
| 1 | +# The 'Jack Converter: Twenty Years of Evolution |
| 2 | + |
| 3 | +A history of one small program, from a middle-school project built off a d20 sourcebook to a |
| 4 | +cross-platform, three-system conversion bench. This is the lineage of what is now **JackForge**. |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## Act I - Origins (circa 2005): the Liber Mechanika era |
| 9 | + |
| 10 | +In 2005 Privateer Press published **Liber Mechanika** (PIP 403), a d20 3.5 supplement for the |
| 11 | +Iron Kingdoms setting. Among its rules was a system for expressing WarMachine WarJacks as d20 / |
| 12 | +Iron Kingdoms stat blocks: the conversion logic that would become the seed of this whole project. |
| 13 | + |
| 14 | +Right around then, as he was **finishing high school**, Victor built the **first version of the |
| 15 | +'Jack Converter**. The language and the exact build are lost to history (this predates any surviving |
| 16 | +binary), but the intent was already the one that survives to today: type in a WarJack's WarMachine |
| 17 | +stat line, get back a playable d20 stat block. The core formulas, the MAT/RAT handling, the |
| 18 | +armor-to-DR relationship, and the hit-box-to-power scaling all trace back to that Liber-Mechanika |
| 19 | +reading of how a warjack should feel in a d20 game. |
| 20 | + |
| 21 | +No artifact from this era survives. It lives on only as the conceptual and mathematical ancestor of |
| 22 | +everything below. |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +## Act II - The 2013 Rebuild: "JackCalculator" |
| 27 | + |
| 28 | +The earliest surviving version is a **2013 rebuild**, recovered in 2026 by reverse-engineering an |
| 29 | +old installer. It is a **C# .NET Framework 4.0 Windows Forms application** named `JackCalculator.exe`, |
| 30 | +titled in-app **"Warmachine to Iron Kingdoms d20 'Jack Converter Ver. 1.0"**, self-signed |
| 31 | +`CN=Clarke\Victor` with a certificate valid from **2013-08-05**. The date on the files (2013) is |
| 32 | +when they were copied to a new machine; the certificate confirms the actual compile was 2013. |
| 33 | + |
| 34 | +Why a rebuild in 2013 and not the original? A tell in the code: it supports **Colossals**, and |
| 35 | +WarMachine Colossals did not exist until the 2012 *WARMACHINE: Colossals* release. So the 2013 |
| 36 | +build is a C# port of the older original, brought current with the game as it stood then. |
| 37 | + |
| 38 | +### How it was packaged (and recovered) |
| 39 | +The program shipped as a Russian-doll installer, which is why recovering it in 2026 took some work: |
| 40 | + |
| 41 | +``` |
| 42 | +Jack Converter Setup.exe (ClickTeam Install Creator, "wwgT" PackData overlay) |
| 43 | + -> UPX-compressed PE stub |
| 44 | + -> bzip2 / zlib members |
| 45 | + -> a Visual Studio ClickOnce deployment |
| 46 | + -> JackCalculator.exe (357,376-byte .NET 4.0 assembly) <- the actual program |
| 47 | +``` |
| 48 | + |
| 49 | +The recovery: identify the ClickTeam container, walk the overlay, inflate every zlib member and |
| 50 | +bzip2-decompress the two large ones, pick out the 357 KB .NET assembly, then decompile it back to |
| 51 | +C# with ILSpy. The recovered source is preserved in `Apps & Scripts/Jack/*.RECOVERED.cs`. |
| 52 | + |
| 53 | +### What the 2013 version did |
| 54 | +A single WinForms window, two columns (WarMachine in, Iron Kingdoms d20 out), a Convert button. |
| 55 | +Inputs: SPD, STR, MAT, RAT, DEF, ARM, hit boxes, TYPE (Light/Heavy/Colossal), a 26-entry CLASS |
| 56 | +list of faction chassis, an arc-node option, and special attacks. Outputs: Speed, STR, DEX, melee |
| 57 | +and ranged attack strings, grapple, saves, DR, AC, HP, size, INT/WIS, and a CR. It even special- |
| 58 | +cased Cyriss Convergence vectors (relabeling MAT/RAT to caster stats). |
| 59 | + |
| 60 | +It was, in Victor's own words, "likely terrible jank" - and it was, in the charming way of a |
| 61 | +self-taught first program: unbounded CR math, a BAB table that pinned at +20, a redundant |
| 62 | +copy-pasted branch, no input validation, and spellings frozen in amber ("Scryah", "Bezerker", |
| 63 | +"Chasis"). It also worked, and it was precious. |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## Act III - The 2026 Reforge: "JackForge" |
| 68 | + |
| 69 | +In 2026 the recovered logic was carried forward into a brand-new application: **JackForge**, a |
| 70 | +**cross-platform C# / .NET (Avalonia) desktop app** with a gritty steampunk "schematic bench" look. |
| 71 | +It keeps faith with the original's math where that math was sound, and rebuilds it where it wasn't. |
| 72 | + |
| 73 | +### What changed, at a glance |
| 74 | + |
| 75 | +| Dimension | 2013 JackCalculator | 2026 JackForge | |
| 76 | +|---|---|---| |
| 77 | +| Platform | Windows only (WinForms, .NET 4.0) | Windows / macOS / Linux (Avalonia, .NET 10) | |
| 78 | +| Systems | Iron Kingdoms d20 (3.5) only | PF1e, PF2e, and Advanced PF1e (box-out) | |
| 79 | +| UI | Two-column form | Themed 3-tab bench, IK-logo header, live example | |
| 80 | +| CR math | Unbounded (a Juggernaut hit CR 26+) | Recalibrated to legal Pathfinder ranges | |
| 81 | +| Export | None | Foundry SBC (PF1) and Bestiary Import (PF2) | |
| 82 | +| Damage | Single HP pool | Optional hit-location "box-out" system | |
| 83 | +| Character jacks | Not handled | "Unique 'Jack?" CR-adjust toggle | |
| 84 | +| Myrmidon fields | Fixed made-up values | Energy Field = HP rounded to nearest 10 + power text | |
| 85 | +| Vectors | Given fake fields as a stand-in | Mindless, caster-driven, optional hover (Fly) | |
| 86 | +| Input safety | Crashed on empty fields | Validated; chassis constrains valid weights | |
| 87 | + |
| 88 | +### The three modes |
| 89 | +- **PF1e** - Pathfinder 1st Edition. A faithful port of the original 3.5-era logic (PF1 was largely |
| 90 | + a 3.5 update), then recalibrated: the original formula is kept as a displayed "raw score", while |
| 91 | + the playable CR is derived from clean threat signals (chassis, hit-boxes, armor) and the combat |
| 92 | + stats are drawn from Pathfinder's official Monster-Statistics-by-CR table. |
| 93 | +- **PF2e** - Pathfinder 2nd Edition. A new system entirely. Built by "benchmark via CR": the PF1 CR |
| 94 | + becomes a creature level, and every stat is read off Paizo's "Building Creatures" benchmark tables. |
| 95 | +- **APF1e** - Advanced PF1e. The feature Victor "always dreamed of but was never skilled enough to |
| 96 | + do": a WarMachine-style **box-out** damage system. HP spreads across Head, Torso, two Arms and two |
| 97 | + Legs; destroy an arm and its weapon is gone, destroy the head and the jack goes inert, destroy the |
| 98 | + torso and the boiler explodes. Myrmidons layer an Energy Field of temp HP on top; colossals get |
| 99 | + two independent structures. |
| 100 | + |
| 101 | +### Validation |
| 102 | +All 16 reference jacks from the WarMachine faction books (Charger, Juggernaut, Stormwall, Prime |
| 103 | +Axiom and the rest) run clean through every mode. That validation pass is what caught and fixed a |
| 104 | +CR-inflation bug inherited from the original's node and vector math. |
| 105 | + |
| 106 | +--- |
| 107 | + |
| 108 | +## The through-line |
| 109 | + |
| 110 | +The math has a clear bloodline: **Liber Mechanika's d20 3.5 conversion rules (2005)** -> the lost |
| 111 | +original -> the **2013 C# formulas** -> **recalibrated against Pathfinder 1e's own monster tables** |
| 112 | +for PF1e, and **re-expressed through Pathfinder 2e's benchmark tables** for PF2e. Twenty years, one |
| 113 | +idea, three rule systems, and the same question every time: *what would this WarJack be, at the |
| 114 | +table?* |
| 115 | + |
| 116 | +*Serric Steel is the Iron Kingdoms' adamantine. Some things never change.* |
0 commit comments