[PR #277] [MERGED] kb(tunic): Harmony re-test, pinned build, v0.2.0 boss/spawn learnings #276

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

📋 Pull Request Information

Original PR: https://github.com/rehan-remade/universal-modder/pull/277
Author: @AfroPK
Created: 10/13/2026
Status: ✅ Merged
Merged: 10/14/2026
Merged by: @rehan-remade

Base: main ← Head: kb/tunic-coop-followup


📝 Commits (3)

  • c6c2246 kb(tunic): Harmony re-test (it works; SetInt is inlined), build id, harness, v0.2.0 boss learnings
  • adf6d03 kb: tunic seamless co-op: review fixes
  • 8303051 Merge remote-tracking branch 'origin/main' into land/pr-277

📊 Changes

3 files changed (+75 additions, -30 deletions)

View changed files

📝 knowledge/INDEX.md (+1 -1)
📝 knowledge/games/tunic/seamless-coop-bepinex6-native-hooks.md (+68 -26)
📝 knowledge/index.json (+6 -3)

📄 Description

Follow-up to #256, answering the open questions from the review and adding what v0.2.0 of the mod taught us.

1. Harmony: re-tested, it works. I patched exactly the way the TUNIC Randomizer does (harmony.Patch(AccessTools.Method(...), postfix: new HarmonyMethod(...))), counting postfix calls with no native detour on the same methods, on the same pre.1 build:

Method Postfix calls
PlayerCharacter.Update 57,941
Chest.IInteractionReceiver_Interact 1 per chest the player opened
Chest._openSequence_d__35.MoveNext 221
SaveFile.SetInt 0, while the open wrote chest open 15 = 1

So the original "0 calls" didn't reproduce, and it isn't worth a BepInEx report. My best explanation is a test that never really opened a chest: on the first try of the re-test the fox stood behind the chest and Interact never ran. SetInt really is invisible to any hook, because it's inlined into its callers, which is why the mod polls the stores. Gotcha 1 and Route and why now say this. The native-detour recipe stays as an alternative.

2. Version pinned: Steam build id 10650562 (appmanifest_553420.acf).

3. Harness: agents: is now Claude Code (Opus 5.5).

Also new (v0.2.0): a section on bosses and other monsters that appear mid-fight:

  • warping into any area with the game's own Cheats.CheatWarpToPortal;
  • keeping each boss with one player for the whole fight, and the boss "defeated" save flags;
  • copies of a monster on other players' machines never decide their own death;
  • naming monsters spawned at runtime, so every player's game pairs up the same ones;
  • waking pre-placed monsters that stay dormant until something triggers them, plus a few pitfalls in the test rig.

Verification now reflects about 106 checks, including five bosses and the Cathedral gauntlet. The open questions now cover The Heir and the relay/UPnP route.

um kb check passes; the index is regenerated (only this note's row changes).


🔄 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/277 **Author:** [@AfroPK](https://github.com/AfroPK) **Created:** 10/13/2026 **Status:** ✅ Merged **Merged:** 10/14/2026 **Merged by:** [@rehan-remade](https://github.com/rehan-remade) **Base:** `main` ← **Head:** `kb/tunic-coop-followup` --- ### 📝 Commits (3) - [`c6c2246`](https://github.com/rehan-remade/universal-modder/commit/c6c2246c2e9ce89c98f89952416cb2b1e0702104) kb(tunic): Harmony re-test (it works; SetInt is inlined), build id, harness, v0.2.0 boss learnings - [`adf6d03`](https://github.com/rehan-remade/universal-modder/commit/adf6d030d13e80db863299f1be49532640ed4929) kb: tunic seamless co-op: review fixes - [`8303051`](https://github.com/rehan-remade/universal-modder/commit/8303051e19e9ad5f61a372d3eb3b73bd1342c873) Merge remote-tracking branch 'origin/main' into land/pr-277 ### 📊 Changes **3 files changed** (+75 additions, -30 deletions) <details> <summary>View changed files</summary> 📝 `knowledge/INDEX.md` (+1 -1) 📝 `knowledge/games/tunic/seamless-coop-bepinex6-native-hooks.md` (+68 -26) 📝 `knowledge/index.json` (+6 -3) </details> ### 📄 Description Follow-up to #256, answering the open questions from the review and adding what v0.2.0 of the mod taught us. **1. Harmony: re-tested, it works.** I patched exactly the way the TUNIC Randomizer does (`harmony.Patch(AccessTools.Method(...), postfix: new HarmonyMethod(...))`), counting postfix calls with no native detour on the same methods, on the same pre.1 build: | Method | Postfix calls | |---|---| | `PlayerCharacter.Update` | 57,941 | | `Chest.IInteractionReceiver_Interact` | 1 per chest the player opened | | `Chest._openSequence_d__35.MoveNext` | 221 | | `SaveFile.SetInt` | 0, while the open wrote `chest open 15 = 1` | So the original "0 calls" didn't reproduce, and it isn't worth a BepInEx report. My best explanation is a test that never really opened a chest: on the first try of the re-test the fox stood behind the chest and `Interact` never ran. `SetInt` really is invisible to any hook, because it's inlined into its callers, which is why the mod polls the stores. Gotcha 1 and *Route and why* now say this. The native-detour recipe stays as an alternative. **2. Version pinned:** Steam build id 10650562 (`appmanifest_553420.acf`). **3. Harness:** `agents:` is now `Claude Code (Opus 5.5)`. **Also new (v0.2.0):** a section on bosses and other monsters that appear mid-fight: - warping into any area with the game's own `Cheats.CheatWarpToPortal`; - keeping each boss with one player for the whole fight, and the boss "defeated" save flags; - copies of a monster on other players' machines never decide their own death; - naming monsters spawned at runtime, so every player's game pairs up the same ones; - waking pre-placed monsters that stay dormant until something triggers them, plus a few pitfalls in the test rig. Verification now reflects about 106 checks, including five bosses and the Cathedral gauntlet. The open questions now cover The Heir and the relay/UPnP route. `um kb check` passes; the index is regenerated (only this note's row changes). --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 20:55:04 +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#276
No description provided.