Total War: WARHAMMER III mods

Seven mods by Yohann Mar Gayao, for campaigns and battles. Each one says what's been checked and what hasn't.

Tested outside the game

Campaign scripts run inside a closed game. There's no test runner, and an error inside a listener gets dropped without a single log line. So the checks run outside it: most of these mods are generated from Python, and their Lua runs under Lua 5.1 against a stubbed campaign before it ships.

Source and tools only. None of the repos include the game's art.

The Grand Trade Exchange

A commodities market and stock exchange for the Chaos Dwarfs. The game prices all 17 trade goods at a flat 50. Here each one moves with who makes it, who's at war and what the player keeps buying, and on top of that sit faction shares, standing orders, contracts, funds and bonds.

Python generators, Lua 5.1, .twui.xml UI · 10 DB tables, 1,643 rows, 5,402 text strings

Checked
The shipped Lua runs through 20 harnesses and 87 groups of checks, including one that the Python price model and the Lua agree.

The Iron Court

Gives the Chaos Dwarfs a court. Lords and heroes belong to parties, you seat them in fourteen offices and as governors, and every seat moves a party's share of the court and its loyalty. Let a party's loyalty run out and it secedes, taking provinces and lords to war under its own name.

Python generators, Lua 5.1, .twui.xml UI · courts for Chaos Dwarf and Dwarf factions

Checked
Playable, and tested live in Chaos Dwarf campaigns. A Lua harness runs the model, parties and panel against a stubbed campaign, plus a mutation runner.
Not yet
Not on the Steam Workshop.

The Great Guilds

Seven guilds, and every faction of your race earns reputation with them just by playing: trading, fighting, researching, building. Favour buys services, bounties turn into real missions, and the AI factions of your race compete to lead each guild. Ten races take part, each with its own guild names and services.

Python generators, Lua 5.1 · 95 services across the ten races

Checked
Playable, and tested live in Chaos Dwarf and Empire campaigns. A mutation script breaks the rules 239 ways, and a harness has to catch every one.

Chaos Dwarf House Ancillaries

430 pieces of equipment for the Chaos Dwarf houses, and four ways to earn them: commission rites, a binding gamble, battle spoils and a conquered house's vault. 30 battle abilities were written for it rather than borrowed from the base game.

All generated from Python · 30 DB tables, 2,636 rows, 1,350 text strings

Checked
Read back from 2,027 of the game's own script logs: every commission that reached its due turn delivered.
Not yet
The spoils route checked 163 won battles and never met one of its fourteen houses, so nobody has seen its dice roll yet.

Third-Person Battles

Play one unit of a battle from behind, like an action game. F2 takes a unit, WASD walks it, the mouse swings and shoots, and a hotbar casts its abilities. F2 again hands it back.

Lua 5.1, memreader Plus · every memory address lives in one file, so a game patch turns off one feature, not the whole mod

Checked
A harness loads the real modules against a stubbed battle and presses keys frame by frame: 573 tests. A two-machine simulation adds 41 more. Out as a beta on the Steam Workshop.
Not yet
Multiplayer is built but hasn't been run on two real machines.

Hashut's Legendary Lords: the tools

The build and audit tools behind a Chaos Dwarf mod that gives each house its own legendary lords, a fifth tier for the Tower of Zharr, a naval horde, and 46 alternative victory routes across 13 houses. The repo holds the tools; the mod itself is on the Workshop.

38 Python tools, about 17,000 lines · the mod: 152 DB tables, 77 Lua scripts

Checked
The generated victory-route script runs under Lua 5.1.5 against a stubbed campaign, and 13 mutants each break one line of it and have to be caught.

Derpy Resource Overhaul

37 new trade goods, each made by the buildings the lore says would make it, and only where the lore puts it. A jungle port lands rum and pearls, and a Dwarf hold digs gromril. It needs no map edit or new start position.

Python generator · extra packs for Immortal Empires Expanded and the Old World campaign

Checked
Tested in an Immortal Empires Expanded campaign over a live connection to the running game: a Salted Fish surplus traded in a vanilla trade agreement.
Not yet
Not on the Steam Workshop.