Phase 4 play-test fixes: deep caves, fuller cave spawns, strays, shared loot
From Adrian's play-test (2026-10-30): - The Deep Dark no longer fills the deepslate layer: world/biomes.json splits it by temperature (Deep Dark under cold and temperate land, basalt deltas under the hottest, ordinary caves between); at y -52 it drops from 30 % to 14 % of the land, basalt 7 %. - Cave zones fill up to their targets with lines whose primary type fits the cave; top stages spawn up to the band's top (Deep Dark Lv 60, Basalt 70); no time-of-day conditions underground. - Wild Pokemon more than 10 levels above the band of the zone they wander into despawn (zone/Wanderers.kt). - Loot is shared: all players in one scoreboard team, Lootr team_loot. - Basalt ore nodes reach the deep basalt. Self-tests strays_despawn and loot_is_shared; the catching rules from the previous commit are now tested too. Template rebuilt (world check passed), island quick check passed (36 self-tests and the restart test). Shoulder Pokemon noted for Phase 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6361636da7
commit
d49684a2eb
40 files changed
+8212
-9412
No files matched your search
+5
-1
@@ -33,7 +33,7 @@ Every tunable lives in a config file or in this table. **Placeholder** means gue
|
||||
| Ore tiers per zone | Button Isle: coal; Southwold: copper; Westmarch: iron, thunder stone; Verdant Jungle: redstone, leaf stone; Highland Meadows: lapis, sun stone; Sunscorch: gold, fire stone; Frostpeak Range: emerald, ice stone, dawn stone; Dripstone Depths: amethyst, moon stone; Deep Dark: diamond, dusk stone; Basalt Furnace: quartz, netherite; Lush Caves: shiny stone; Mangrove Mire: water stone | Fine for now (Adrian, 2026-10-30) | `world/zones.json` → `ores` → `tools/zone_ores.py` | Each tier in exactly one zone; evolution stones are tiers (their natural ores are off) |
|
||||
| Vein regrowth | 20 min: coal; 30 min: copper; 40 min: iron; 45 min: redstone, lapis; 60 min: gold, quartz, thunder stone, shiny stone, leaf stone, water stone, moon stone, sun stone, fire stone, ice stone; 75 min: emerald, dawn stone, dusk stone; 90 min: diamond; 120 min: amethyst; 180 min: netherite; ±10 % jitter; real time | Fine for now (Adrian, 2026-10-30) | `world/zones.json` → `ores` (`regen_minutes`, `ore_defaults.jitter`) | Counts while the server is off too |
|
||||
| Ore nodes | chance per chunk of the zone — surface: coal 50 %, copper 20 %, iron 20 %, redstone 20 %, lapis 15 %, gold 30 %, emerald 15 %, thunder stone 3 %, leaf stone 4 %, water stone 4 %, sun stone 2 %, fire stone 8 %, ice stone 6 %, dawn stone 4 %; cave floor (8 columns searched): amethyst 50 %, diamond 15 %, quartz 50 %, netherite 6 %, shiny stone 15 %, moon stone 25 %, dusk stone 10 %. Radius 0–1 (evolution stones and netherite one block), 80 % filled | Placeholder (Adrian, 2026-10-30: small on the surface) | `world/zones.json` → `ores` → `nodes` | |
|
||||
| Underground veins (surface tiers) | radius 2–4 (stones 1–2), spacing 6–11 chunks between candidate chunks, 70 % filled, 1–2 tries per candidate chunk | Placeholder (Adrian, 2026-10-30: larger but harder to find) | `world/zones.json` → `ores` → `veins` | Ore blocks in the template (2026-10-30): copper 10,400, iron 6,356, quartz 2,397, lapis 2,236, coal 2,222, redstone 1,044, gold 815, diamond 559, shiny stone 466, thunder stone 239, sun stone 238, amethyst 238, dusk stone 222, emerald 181, leaf stone 125, ice stone 102, moon stone 100, fire stone 98, water stone 95, netherite 74, dawn stone 64. Per zone in `build/island-report.json` after `tools/make_world.py` |
|
||||
| Underground veins (surface tiers) | radius 2–4 (stones 1–2), spacing 6–11 chunks between candidate chunks, 70 % filled, 1–2 tries per candidate chunk | Placeholder (Adrian, 2026-10-30: larger but harder to find) | `world/zones.json` → `ores` → `veins` | Ore blocks in the template (2026-10-31, nodes and veins): copper 33,211, iron 18,275, quartz 13,366, coal 7,363, lapis 6,092, amethyst 3,640, redstone 3,406, gold 2,223, emerald 1,404, shiny stone 1,270, diamond 1,078, moon stone 970, sun stone 684, thunder stone 667, ice stone 435, dusk stone 425, water stone 404, dawn stone 380, leaf stone 352, fire stone 317, netherite 290. Per zone in `build/island-report.json` after `tools/make_world.py` |
|
||||
| Regenerators breakable by players | no; explosions don't hurt veins | Fine for now (Adrian, 2026-10-30) | `tools/zone_ores.py` → `global.json` | Otherwise a player could remove a vein for good |
|
||||
| Vein Locator | compass + copper ingot; 75 % chance to break per use (the mod's default) | Fine for now (Adrian, 2026-10-30) | `tools/zone_ores.py` → `vein_locator.json` | The mod's default recipe needs netherite |
|
||||
| Drops for mobs the island lacks | Blaze Rod: Carkol 10 %, Torkoal 25 % ×1–2; Ghast Tear: Drifloon 5 %, Dusclops 10 %; Breeze Rod: Whimsicott 10 %; Shulker Shell: Shuckle 10 %, Cloyster 10 %; Nether Star: Charizard 5 % | Fine for now (Adrian, 2026-10-30) | `datapacks/core/data/cobblesurvival/species_additions/` | Every drop and what consumes it: `docs/pokemon-drops.md` (`tools/drop_audit.py`) |
|
||||
@@ -47,6 +47,10 @@ Every tunable lives in a config file or in this table. **Placeholder** means gue
|
||||
| Ride stats (speed, stamina, ...) | Cobblemon's own | To tune after play-testing | species `riding` via `species_additions` | |
|
||||
| Healing while sleeping | off (`healPercent` 0) | Decided (roadmap) | `config/cobblemon/main.json` | |
|
||||
| Loot container refresh | 1 hour (72,000 ticks of game time) after first opened, all containers | Decided (Adrian, 2026-10-29) | `config/lootr-common.toml` | Tiering by structure/biome later |
|
||||
| Loot per player or shared | shared: one inventory per container for everybody (Lootr `team_loot`, all players in the team `islanders`) | Decided (Adrian, 2026-10-30) | `config/lootr-common.toml`, `world/SharedLoot.kt` | Gilded chests: rolled once, shared, don't refill |
|
||||
| Stray wild Pokémon | despawn when more than 10 levels above the band of the zone they stand in | Placeholder (Adrian, 2026-10-30: a Lv 61 in the Lush Caves) | `world/zones.json` → `wanderers` | Not in battles, not while angry, never guardians |
|
||||
| Deep layer split | temperature of the land above up to −0.1: Deep Dark; from 0.4: basalt deltas; between: ordinary caves | Placeholder (Adrian, 2026-10-30: Deep Dark scaled back, some basalt) | `world/biomes.json` → `split` → `tools/biome_layout.py` | y −52: Deep Dark 14 %, basalt 7 %, ordinary 9 % of land (was 30 % Deep Dark) |
|
||||
| Cave zone types | Lush Caves grass, bug, fairy, poison, water; Dripstone rock, ground, steel, fairy, psychic, dragon; Deep Dark ghost, dark, steel, poison, psychic, rock; Basalt fire, rock, ground, steel, dark | Placeholder | `world/zones.json` → caves → `types` | Fills each cave zone up to its `lines` from the lines that spawn nearly anywhere |
|
||||
| Gamerules in the template | `doMobSpawning false` | Decided (Adrian, 2026-10-28; may be reverted later) | `world/world.json` → `gamerules` | Pokémon spawning is Cobblemon's own `doPokemonSpawning` |
|
||||
| Border margin | 96 blocks of sea past the outermost coast | Placeholder | `world/world.json` | |
|
||||
| Pregeneration circle | radius 1,700 around 0,0 | Tooling | `world/world.json` | Must cover the land plus `border_margin`; `make_world.py` stops if it doesn't |
|
||||
|
||||
Reference in new issue
Block a user