Tooling — stctl¶
stctl is the umbrella CLI for authoring .rcmod bundles. It lives
under splintertree-ctl/ and ships with the unified service image.
Subcommand families¶
| Family | Output | Target |
|---|---|---|
stctl bundle (new / build / validate / inspect) |
<name>.rcmod |
Mod packaging |
stctl patch build / validate |
client-patch MPQ | DBC + LUAXML + raw-file edits |
stctl image to-blp / from-blp |
*.blp / *.png |
Texture conversion |
stctl creatures / quests / items / gameobjects build |
<dir>/<entry>.json |
AC world.*_template content rows |
stctl loot build |
loot_<target>/<id>.json |
AC world.*_loot_template (12 pools) |
stctl conditions build |
conditions/<source>_<group>.json |
AC world.conditions |
stctl smart build |
smart_scripts/<entry>.json |
AC world.smart_scripts |
stctl ach build |
achievement_rewards/<id>.json |
AC server-side achievement helpers |
stctl channels build |
scripts/_channels.py |
Typed pub/sub channel registry |
stctl orm build |
db/orm.sql + scripts/_orm.py |
Mod-defined cluster.* tables |
stctl inline build |
scripts/<id>.py |
Inline-Python author shortcuts |
stctl mods migrate-to-oci |
(DB write) | Backfill OCI delivery for legacy mods |
stctl content (resolve / build-game / sync / import / export / diff / alloc-ids) |
(varied) | Cluster DB content pipeline |
stctl exe patch |
patched Wow.exe |
Binary patcher (large-address / view-distance / …) |
stctl mpq (list / extract / pack) |
MPQ ops | Low-level archive ops |
stctl dbc dump |
text | DBC inspection |
Every builder accepts named-string forms for the most-used enums
(school: fire, quest_type: dungeon, event: aggro,
condition: aura, quality: epic,
bonding: bind_when_picked_up, …) and falls back to raw integers
for anything not enumerated. Backwards-compatible with hand-written
manifests.
Author loop¶
The fast iteration loop looks like:
# scaffold a new mod
stctl bundle new my_mod
# author content under my_mod/
$EDITOR my_mod/mod.yaml my_mod/scripts/welcome.py
# build a candidate bundle
stctl bundle build my_mod
# upload to a realm via the admin portal,
# or push to the OCI registry directly
stctl bundle validate runs the same checks the activator uses, so
a green local validation means activation will not fail.
Live reload¶
Once a mod is loaded on a realm, GMs can reload Python scripts without re-uploading the bundle:
YAML content changes still require a bundle rebuild + activation — they touch DB rows and DBC tables.