[PR #139] [CLOSED] kb: Battle Brothers Squirrel mod via Modern Hooks and MSU (Training Grounds) #155

Closed
opened 2026-10-15 20:53:53 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rehan-remade/universal-modder/pull/139
Author: @Sekach57
Created: 10/7/2026
Status: ❌ Closed

Base: main ← Head: kb/battle-brothers-squirrel-training


📝 Commits (10+)

  • f888596 examples: Battle Brothers Training Grounds mod source, build script, logic test
  • c93fb7a examples: Battle Brothers Training Grounds README, MODLOG, build test
  • 198a03e examples: drop stray compiled out.cnut from Battle Brothers example
  • 394f767 examples: Training Grounds: drop world-map EventLog calls (Tactical.EventLog is battle-only)
  • 4d01627 examples: Training Grounds gets its own building art (day and night, fal-generated)
  • decf588 examples: Training Grounds: ship _b image variants the town UI requests; allow clicks at night
  • 8f8aba5 examples: Training Grounds wizard: max 5 buttons per screen (3 choices, more, leave/back)
  • a682db8 examples: Training Grounds wizard: buttons return screen IDs (vanilla rejects tables)
  • ba48aed examples: Training Grounds only in some towns (stable per-town lottery, MSU percent setting)
  • d81ee32 Battle Brothers training: richer wizard screens and completion notice

📊 Changes

20 files changed (+1163 additions, -1 deletions)

View changed files

➕ examples/battle-brothers-training/MODLOG.md (+62 -0)
➕ examples/battle-brothers-training/README.md (+74 -0)
➕ examples/battle-brothers-training/build.py (+44 -0)
➕ examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds.png (+0 -0)
➕ examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds_b.png (+0 -0)
➕ examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds_night.png (+0 -0)
➕ examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds_night_b.png (+0 -0)
➕ examples/battle-brothers-training/mod/scripts/!mods_preload/mod_training_grounds.nut (+26 -0)
➕ examples/battle-brothers-training/mod/scripts/entity/world/settlements/buildings/tg_training_grounds_building.nut (+24 -0)
➕ examples/battle-brothers-training/mod/scripts/mods/tg/tg_notice_event.nut (+42 -0)
➕ examples/battle-brothers-training/mod/scripts/mods/tg/tg_wizard_event.nut (+234 -0)
➕ examples/battle-brothers-training/mod/scripts/skills/effects_world/tg_training_effect.nut (+99 -0)
➕ examples/battle-brothers-training/mod/training_grounds/game.nut (+169 -0)
➕ examples/battle-brothers-training/mod/training_grounds/hooks.nut (+53 -0)
➕ examples/battle-brothers-training/mod/training_grounds/logic.nut (+90 -0)
➕ examples/battle-brothers-training/tests/test_logic.nut (+67 -0)
📝 knowledge/INDEX.md (+2 -1)
➕ knowledge/games/battle-brothers/squirrel-mod-via-modern-hooks-and-msu-a-training-grounds-tow.md (+113 -0)
📝 knowledge/index.json (+35 -0)
➕ tests/test_battle_brothers_example.py (+29 -0)

📄 Description

What

A field note and a working example mod for Battle Brothers: a "Training Grounds" town building built as a
Squirrel mod on Modern Hooks 0.6.0 and MSU 1.9.0 (game 1.5.2.3).

  • knowledge/games/battle-brothers/: setup, how town buildings, brother stats, skills and event screens work,
    and numbered gotchas (symptom, cause, fix). It is the first note for this game and for Squirrel scripting.
  • examples/battle-brothers-training/: the mod source, build script, offline Squirrel logic test and README.
    No game files or decompiled code are included. The building art was generated with fal and credited.
  • tests/test_battle_brothers_example.py: checks the example builds.

Status

status: in-progress. Verified in the real game: the mod loads, the building appears, the click and the
wizard work (bugs were found and fixed from log.html). Not verified yet: the stat boost after the training
days, the -25% display, save/load mid-training, and the richer screens added last.

Checks

  • uv run --with pytest pytest -q tests: 78 passed, 1 skipped (the Squirrel test needs sq.exe).
  • um kb check --index: pass. um publish check .: 0 failures.
  • Diff scanned for personal paths and keys: none.

Built with Claude Code (Sonnet 5.5) and checked by a human playing the game.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rehan-remade/universal-modder/pull/139 **Author:** [@Sekach57](https://github.com/Sekach57) **Created:** 10/7/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `kb/battle-brothers-squirrel-training` --- ### 📝 Commits (10+) - [`f888596`](https://github.com/rehan-remade/universal-modder/commit/f888596a8eb3c9565612d50fd57411082afdc22f) examples: Battle Brothers Training Grounds mod source, build script, logic test - [`c93fb7a`](https://github.com/rehan-remade/universal-modder/commit/c93fb7ac639285954c94c83846dcc84cbfe342db) examples: Battle Brothers Training Grounds README, MODLOG, build test - [`198a03e`](https://github.com/rehan-remade/universal-modder/commit/198a03efd70532bdd2f0018b0dc65cfc75084196) examples: drop stray compiled out.cnut from Battle Brothers example - [`394f767`](https://github.com/rehan-remade/universal-modder/commit/394f76794907bd468be9a1002a8f54afd18b1c2c) examples: Training Grounds: drop world-map EventLog calls (Tactical.EventLog is battle-only) - [`4d01627`](https://github.com/rehan-remade/universal-modder/commit/4d01627df6033e2d85a50a9671cacd487867d906) examples: Training Grounds gets its own building art (day and night, fal-generated) - [`decf588`](https://github.com/rehan-remade/universal-modder/commit/decf5885479ef298b31b508ea624d65f39c01bb0) examples: Training Grounds: ship _b image variants the town UI requests; allow clicks at night - [`8f8aba5`](https://github.com/rehan-remade/universal-modder/commit/8f8aba5c8e939bae0c70cbc94fd1f4fa18199aa0) examples: Training Grounds wizard: max 5 buttons per screen (3 choices, more, leave/back) - [`a682db8`](https://github.com/rehan-remade/universal-modder/commit/a682db8b9a76afe1001771f25b3557061a2e6b3d) examples: Training Grounds wizard: buttons return screen IDs (vanilla rejects tables) - [`ba48aed`](https://github.com/rehan-remade/universal-modder/commit/ba48aedf030fdbe4b86fe464feeb51d51f4fa702) examples: Training Grounds only in some towns (stable per-town lottery, MSU percent setting) - [`d81ee32`](https://github.com/rehan-remade/universal-modder/commit/d81ee329adcf938a03b04c112876f60ecb45c086) Battle Brothers training: richer wizard screens and completion notice ### 📊 Changes **20 files changed** (+1163 additions, -1 deletions) <details> <summary>View changed files</summary> ➕ `examples/battle-brothers-training/MODLOG.md` (+62 -0) ➕ `examples/battle-brothers-training/README.md` (+74 -0) ➕ `examples/battle-brothers-training/build.py` (+44 -0) ➕ `examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds.png` (+0 -0) ➕ `examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds_b.png` (+0 -0) ➕ `examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds_night.png` (+0 -0) ➕ `examples/battle-brothers-training/mod/gfx/ui/settlements/tg_training_grounds_night_b.png` (+0 -0) ➕ `examples/battle-brothers-training/mod/scripts/!mods_preload/mod_training_grounds.nut` (+26 -0) ➕ `examples/battle-brothers-training/mod/scripts/entity/world/settlements/buildings/tg_training_grounds_building.nut` (+24 -0) ➕ `examples/battle-brothers-training/mod/scripts/mods/tg/tg_notice_event.nut` (+42 -0) ➕ `examples/battle-brothers-training/mod/scripts/mods/tg/tg_wizard_event.nut` (+234 -0) ➕ `examples/battle-brothers-training/mod/scripts/skills/effects_world/tg_training_effect.nut` (+99 -0) ➕ `examples/battle-brothers-training/mod/training_grounds/game.nut` (+169 -0) ➕ `examples/battle-brothers-training/mod/training_grounds/hooks.nut` (+53 -0) ➕ `examples/battle-brothers-training/mod/training_grounds/logic.nut` (+90 -0) ➕ `examples/battle-brothers-training/tests/test_logic.nut` (+67 -0) 📝 `knowledge/INDEX.md` (+2 -1) ➕ `knowledge/games/battle-brothers/squirrel-mod-via-modern-hooks-and-msu-a-training-grounds-tow.md` (+113 -0) 📝 `knowledge/index.json` (+35 -0) ➕ `tests/test_battle_brothers_example.py` (+29 -0) </details> ### 📄 Description ## What A field note and a working example mod for Battle Brothers: a "Training Grounds" town building built as a Squirrel mod on Modern Hooks 0.6.0 and MSU 1.9.0 (game 1.5.2.3). - `knowledge/games/battle-brothers/`: setup, how town buildings, brother stats, skills and event screens work, and numbered gotchas (symptom, cause, fix). It is the first note for this game and for Squirrel scripting. - `examples/battle-brothers-training/`: the mod source, build script, offline Squirrel logic test and README. No game files or decompiled code are included. The building art was generated with fal and credited. - `tests/test_battle_brothers_example.py`: checks the example builds. ## Status `status: in-progress`. Verified in the real game: the mod loads, the building appears, the click and the wizard work (bugs were found and fixed from `log.html`). Not verified yet: the stat boost after the training days, the -25% display, save/load mid-training, and the richer screens added last. ## Checks - `uv run --with pytest pytest -q tests`: 78 passed, 1 skipped (the Squirrel test needs `sq.exe`). - `um kb check --index`: pass. `um publish check .`: 0 failures. - Diff scanned for personal paths and keys: none. Built with Claude Code (Sonnet 5.5) and checked by a human playing the game. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 20:53:53 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rehan-remade/universal-modder#155
No description provided.