Cache.MapSquare discards the overlay id, so nothing can ask whether a tile is water #118

Open
opened 2026-08-05 02:03:07 +00:00 by sickday · 0 comments
Owner

Cache.MapSquare.settle/3 reads a tile's overlay id and then throws it
away
, keeping only a @drawn flag. Water is an overlay, so nothing in this
server can answer is this tile water — and blocked-and-floored cannot tell a
river from a wall.

What it cost

Fishing. Every one of this cache's 17 Lure/Bait fishing-spot definitions
has zero spawns in the operator's dump, so trout, salmon, pike and rainbow
fish were absent from the world entirely and the skill had a hole from 20 to
58. Thirty spawn rows now fill it, across five areas.

The tiles are derived from the collision map rather than typed, and they are
defensible — the convention is measured (194 of the dump's own 197 fishing
spots stand on the water and are worked from the bank) and the derivation
reproduces the dump's own barbarian-rod tiles at 2500, 3504..3513 exactly.
But the five areas themselves were found by rendering the region as ASCII and
reading the river off it by eye, because "blocked with a walkable neighbour"
is the closest a collision map gets to "shore".

The other wiki-listed fly locations — Seers'/Sinclair, Entrana, Observatory,
Isafdar, Water Ravine, Hosidius — are not placed, for exactly that reason.

What keeping the id would buy

Is this tile water becomes answerable, and then:

  • every remaining fly location is generated rather than eyeballed;
  • any later water content (a fishing spot, a boat, a swim) derives its
    coordinates instead of stating them;
  • the boot log's "spawns standing on ground they could not have walked onto"
    line can say on water rather than guessing at ducks and icebergs.

This is the invariant a scan that returns nothing is a claim about the
decoder, not only the data
arriving from the useful direction — the same
shape as Cache.Widget's if1 body, which had four sweeps concluding rev 149
has no make menu.

Why it was not done on the fishing branch

It ripples into climbing's void work, which reads the same @drawn flag to
decide whether a tile has a floor at all. That is a separate change with its
own verification.

`Cache.MapSquare.settle/3` reads a tile's overlay id and then **throws it away**, keeping only a `@drawn` flag. Water is an overlay, so nothing in this server can answer *is this tile water* — and blocked-and-floored cannot tell a river from a wall. ## What it cost Fishing. Every one of this cache's 17 `Lure`/`Bait` fishing-spot definitions has **zero spawns** in the operator's dump, so trout, salmon, pike and rainbow fish were absent from the world entirely and the skill had a hole from 20 to 58. Thirty spawn rows now fill it, across five areas. The tiles are derived from the collision map rather than typed, and they are defensible — the convention is measured (194 of the dump's own 197 fishing spots stand **on** the water and are worked from the bank) and the derivation reproduces the dump's own barbarian-rod tiles at `2500, 3504..3513` exactly. But the five areas themselves were found by rendering the region as ASCII and reading the river off it by eye, because "blocked with a walkable neighbour" is the closest a collision map gets to "shore". The other wiki-listed fly locations — Seers'/Sinclair, Entrana, Observatory, Isafdar, Water Ravine, Hosidius — are **not placed**, for exactly that reason. ## What keeping the id would buy *Is this tile water* becomes answerable, and then: * every remaining fly location is **generated** rather than eyeballed; * any later water content (a fishing spot, a boat, a swim) derives its coordinates instead of stating them; * the boot log's "spawns standing on ground they could not have walked onto" line can say *on water* rather than guessing at ducks and icebergs. This is the invariant *a scan that returns nothing is a claim about the decoder, not only the data* arriving from the useful direction — the same shape as `Cache.Widget`'s if1 body, which had four sweeps concluding rev 149 has no make menu. ## Why it was not done on the fishing branch It ripples into climbing's void work, which reads the same `@drawn` flag to decide whether a tile has a floor at all. That is a separate change with its own verification.
Sign in to join this conversation.
No labels
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
Revenant/Server#118
No description provided.