Skip to content

feat(oil): tar seeps, the scanner's oil echo, full-height pockets, bio-lubricant, the Codex + Screelit's fruit x-ray (#2377) - #2380

Merged
marceld23 merged 3 commits into
mainfrom
feat/oil-findability
Oct 7, 2026
Merged

marceld23 merged 3 commits into
mainfrom
feat/oil-findability

Conversation

@marceld23

Copy link
Copy Markdown
Owner

Closes #2377
Closes #2370
Closes #2371
Closes #2372
Closes #2373
Closes #2374
Closes #2375
Closes #2379

Oil is the only source of lubricant, which gates the jump generator, the drill tier, the speeder, the fabricator and the
clone tank. Measured with the real generator, it was almost impossible to find:

  • 7–21 pockets per living world, ≈ 600 blocks apart;
  • their tops ≈ 75 blocks under the surface;
  • a terrain scanner that reached 20 blocks.

What changes

Terrain generation 22 (WorldDescription.OilSeepGeneration). Every older chunk stays bit-identical; golden
jungle-gen22 equals jungle-gen18 at the sample columns.

Terrain scanner oil echo (#2372).

  • WorldGenerator.FindOilPocketsNear reads the pocket grid directly: a handful of hash evaluations, no chunk.
  • The scanner reports the nearest pocket within 800 blocks that still holds oil. It checks the pocket's heart in the
    live world, so a pumped-out pocket falls silent.
  • The player sees:
    • a ping on the compass and the map (server RaisePingAt);
    • a violet marker;
    • a second toast with distance and depth.
  • OreScanResult gets new fields: OilEcho, OilFound, OilX/Y/Z, OilEchoRange. They are contractless, and an
    older peer reads them as false/0, so no protocol bump.

Bio-lubricant (#2373).

  • New refinery recipe: 3 biofuel + 1 carbon → 1 lubricant. Crude oil stays the cheaper route (1 + 1 → 2).
  • It works on every world, including saves from before generation 18, which hold no oil at all.

Codex (#2374).

  • New article Oil and Lubricant (DE + EN).
  • Prospecting & Ore gets depth figures that match planets.json (diamond 46+, not 40+).
  • The Planets chapter shows an oil line for the types that hold oil.
  • The planet scan line now says "40–120 blocks".

Gas giant (#2375). It counts as living but never holds oil. The survey and CarriesOilPockets now exclude gas
worlds.

Texts.

  • New and changed keys in all 14 languages. The twelve community languages are hand-written using each locale's own
    terms (fuel, refinery, compass, ping).
  • pl tar: „Tar“ → „Smoła“.
  • The coverage manifest is unchanged (100 %).

Docs. WORLD_GENERATION §39 (plus a note in §33), USER_MANUAL, TODO.md.

Screelit's report (#2379).

  • What it looked like: looking past a fruit hanging under a crown showed the sky through the crown.
  • Cause: a crown cell drew faces only toward air or glass, and a fruit (flora_*) counted as its own kind, so the leaf
    face toward it was culled. But the fruit is a thin cross billboard and never fills its cell.
  • Fix:
    • Crown cells now also face cross-billboard plants and slim props (TraitThinPlant,
      ChunkMesher.FoliageFaceOpensTo).
    • Crown cells still seal each other.
    • Two new EditMode tests.

Not in this PR: #2376 (gadgets have no server-side reach check).

Tests

  • OilSeepsWorldTests (8):
    • the half-height on both sides of the gate;
    • generation 21 matches generation 18 pocket for pocket;
    • about 3 in 8 pockets seep;
    • an unbroken chimney with a puddle and nothing on it;
    • no seep below generation 22;
    • the echo query matches the pocket function;
    • the gas giant;
    • dead worlds and old generations.
  • OilEchoTests (4):
    • the scan finds the nearest pocket, and a pocket pumped dry falls silent;
    • the real scan pings;
    • no echo on a dead world;
    • the bio-lubricant recipe.
  • Golden jungle-gen22.
  • Unity EditMode ChunkMesherTreeFoliageEditModeTests (+2):
    • the face rule per block;
    • a leaf over a fruit keeps its bottom face.
  • Local runs:
    • full server suite, Release, non-Slow: 4348/4348;
    • Unity player build: Success.

🤖 Generated with Claude Code

marceld23 and others added 2 commits October 7, 2026 21:36
…o-lubricant, the Codex + Screelit's fruit x-ray (#2377)

Terrain generation 22 (OilSeepGeneration):
- the pocket half-height reads free hash bits (it read bits the chance roll had zeroed:
  every pocket was at most four cells of oil) (#2370)
- three pockets in eight seep: a tar chimney to the ground, a tar patch with an oil puddle;
  flora, trees, props and settlement buildings keep off it (#2371)

- terrain scanner oil echo: the nearest pocket within 800 blocks that still holds oil, as a
  ping, a violet marker and a toast with distance and depth (#2372)
- bio-lubricant: 3 biofuel + 1 carbon -> 1 lubricant at the refinery (#2373)
- Codex: Oil and Lubricant article, depth figures in Prospecting & Ore, oil in the Planets
  chapter; planet scan names 40-120 blocks (#2374)
- gas giants no longer claim oil pockets (#2375)
- Screelit's report: crown leaves keep their face toward a hanging fruit or any cross-billboard
  plant / slim prop - no x-ray hole in the crown (#2379)

Texts in all 14 languages; WORLD_GENERATION section 39, USER_MANUAL, TODO.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@marceld23 marceld23 added enhancement New feature or request package: oil findability 2026-10 Oil pockets you can find, a lubricant fallback, terrain generation 22 labels Oct 7, 2026
@marceld23 marceld23 self-assigned this Oct 7, 2026
…ted load)

55 test classes had no measured weight; the two new oil test classes pushed the guessed share
over the 5 % budget. Slow seconds from the v2026.10.8 release run (full tier), fast seconds from
PR #2369's run (fast tier), the two new classes from a local run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@marceld23
marceld23 merged commit a29350c into main Oct 7, 2026
20 checks passed
@marceld23
marceld23 deleted the feat/oil-findability branch October 7, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment