Skip to content

fix(MoonsOfPeril): fish the river fishing spot during resupply (1.0.5) - #647

Merged
chsami merged 1 commit into
developmentfrom
claude/err-moonsofperil-resupply-stands-at-fishing-spot
Oct 16, 2026
Merged

chsami merged 1 commit into
developmentfrom
claude/err-moonsofperil-resupply-stands-at-fishing-spot

Conversation

@chsami

@chsami chsami commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Problem

A Discord support report (message) says Moons of Peril never finishes resupplying. The bot walks to the bream fishing spot, stands still in front of it, and never fishes. The inventory never fills, so the resupply phase never ends.

Root cause

ResupplyHandler.fishBream() loops until the inventory is full and calls interact(51367, "Fish") on the tile-object cache. The 2026-06-30 cache update (client commit 5af7e1ae0c, "Update GameVals to 2026-06-30-c1-rev239") removed the old Perilous Moons fishing ids:

  • PMOON_FISHING_SPOT_MULTI 51367
  • PMOON_FISHING_SPOT 51368
  • PMOON_FISHING_SPOT_EXIT 51369
  • PMOON_FISHING_CLICKZONE_ACTIVE 51370
  • PMOON_FISHING_CLICKZONE 52997

In the current client, 51367 is SAILING_GANGPLANK_PROXY_WIDE_VIKING. The query finds nothing, interact returns false without logging anything, and the loop spins forever at (1520, 9689, 0).

The new river-fishing set is CLICKZONE 62191, CLICKZONE_ACTIVE 62192, RIVER_FISHING_SPOT 62193 (an unnamed multiloc, the counterpart of the old _MULTI), SPOT_ENTER 62194 and SPOT_EXIT 62195. The client's quest helper (PerilousMoon.java:513) now targets ObjectID.RIVER_FISHING_SPOT at (1521, 9689, 0), the tile next to our walk tile.

Change

  • ResupplyHandler: added BREAM_FISHING_SPOT_ID = ObjectID.RIVER_FISHING_SPOT, and the fishing call now uses it instead of the hard-coded 51367. This was the only call site. A grep for the old ids and PMOON_FISHING found no other users in the Hub.
  • Fishing loop: added a 60-second no-progress bail-out, tracked by the empty-slot count. When it triggers, it logs No bream caught in 60s; giving up on fishing this resupply. and returns, so a future id change shows up in the log instead of a silent idle. The check is a small pure helper, isFishingStalled(lastProgressAt, now).
  • The 3-4s sleep after an interaction now runs only when the interaction succeeds. A debug log covers the case where the spot is not found.
  • Plugin version bumped 1.0.4 -> 1.0.5.
  • New ResupplyHandlerTest. It checks that the spot id is the river fishing spot and not the retired id, and it tests the stall helper.

Validation

  • ./gradlew test -PpluginList=MoonsOfPerilPlugin --tests '*ResupplyHandlerTest' --tests '*PluginManifestVersionTest': BUILD SUCCESSFUL. ResupplyHandlerTest passed 2/2 and PluginManifestVersionTest passed 1/1.
  • ./gradlew build -PpluginList=MoonsOfPerilPlugin -x test: BUILD SUCCESSFUL.

Known gaps

  • Not tested in a live client.
  • Not confirmed in game:
    • which object takes the click: 62193 (the multiloc) or the 62192 stream clickzone. The quest helper and the old multiloc layout both point to 62193.
    • the exact "Fish" action text. If the text has changed, Rs2TileObjectModel.click falls back to the first action instead of failing.
  • After the stall bail-out fires, execute() still cooks and goes back to IDLE, so a broken spot repeats the resupply cycle instead of idling silently. The log line makes that visible, but the bail-out is a safety guard, not a stop condition.
  • The id test protects against reverting to 51367. It does not prove the in-game behaviour is right.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LjtEMzQHGuq4M1Mpqk9pPV

The rev239 cache update removed PMOON_FISHING_SPOT_MULTI (51367) and
moved the Moons of Peril bream spot to ObjectID.RIVER_FISHING_SPOT; the
old id now belongs to a sailing gangplank, so the Fish interaction
matched nothing and the resupply loop idled beside the stream forever.

Target RIVER_FISHING_SPOT (the id the quest helper uses at the same
stream) and stop fishing with a log line when no bream is caught for
60 seconds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjtEMzQHGuq4M1Mpqk9pPV
@chsami
chsami merged commit 293dc8e into development Oct 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant