CI / build-and-smoke-test (push) Failing after 7m6s
- Companion mod (zone/Guardians.kt): each zone's guardian stands at the zone's sample point, appears when a player is within 96 blocks, stays within 24 blocks, is uncatchable and half again as big. Beating it in a battle gives every player in the battle its drops; it returns after 5 hours of game time (Adrian: fixed spots, 5 hours). State lives in the world save; /cobblesurvival guardians lists it. - tools/zone_spawns.py writes data/cobblesurvival/guardians/<zone>.json: the strongest walking (or swimming) Pokemon of the zone at band top + 5, with the drops from world/zones.json. Boss drops follow Adrian's rule: Icy Rocks before Sunscorch, Heat Rocks before Frostpeak. - Goat Fur and Hoglin Hide recipes make 8 per rock, so one guardian's 3 rocks pay for one full insulating set. - Self-test guardian_appears_and_returns; hazard tests cleaned up; the zone generator reads Cobblemon's own entries from the field guide's hidden_spawns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
56 lines
4.9 KiB
JSON
56 lines
4.9 KiB
JSON
{
|
|
"_comment": "Zone plan for Phase 3 (model approved by Adrian 2026-10-29; levels are placeholders, see docs/balance.md). tools/zone_layout.py assigns each surface cell of the island to the first zone whose rule matches, in this order, and renders build/zone-map.png. Rules: 'within' = distance from 0,0 in blocks; 'biomes' = cells of these biomes, clusters smaller than min_cells dropped, plus 'absorb' = cells of other biomes within that many blocks of the cluster; 'region' = what is left, by half-plane (x/z bounds in blocks); 'water' = sea cells of these biomes. Biomes in 'inherit' (rivers) take the zone of the land around them. Cave zones follow the cave biome everywhere under the island and are not drawn. 'lines' = how many evolution lines tools/zone_spawns.py aims to give the zone (scaled to the lines available); 'species' pins a line to a zone by hand. 'guardian': the zone's Alpha guardian (tools/zone_spawns.py picks the strongest Pokémon spawning in the zone unless 'species' is given, at the band's top level + 5) and its drops, which help with the next zone; it stands at the zone's sample point and returns guardian_respawn_hours after it is beaten (Adrian, 2026-10-29: fixed spots, 5 hours).",
|
|
"min_cells": 6,
|
|
"inherit": ["minecraft:river"],
|
|
"guardian_respawn_hours": 5,
|
|
"species": {"durant": "basalt", "torkoal": "basalt", "heatmor": "basalt"},
|
|
"zones": [
|
|
{
|
|
"id": "button_isle", "guardian": {"drops": [["cobblemon:poke_ball", 10], ["cobblemon:potion", 4]]}, "lines": 20, "name": "Button Isle", "levels": [2, 10], "hazard": "none", "color": "#a6d96a",
|
|
"rule": {"within": 300}
|
|
},
|
|
{
|
|
"id": "frostpeak", "guardian": {"drops": [["cobblemon:icy_rock", 3], ["cobblemon:exp_candy_l", 2]]}, "lines": 30, "name": "Frostpeak Range", "levels": [40, 55], "hazard": "cold (Cold Sweat): needs wool insulation", "color": "#f2f7ff",
|
|
"rule": {"biomes": ["minecraft:jagged_peaks"], "absorb": {"minecraft:windswept_hills": 96, "minecraft:cherry_grove": 144}}
|
|
},
|
|
{
|
|
"id": "sunscorch", "guardian": {"drops": [["cobblemon:heat_rock", 3], ["cobblemon:exp_candy_l", 2]]}, "lines": 25, "name": "Sunscorch", "levels": [30, 45], "hazard": "heat (Cold Sweat): needs heat insulation", "color": "#f4a443",
|
|
"rule": {"biomes": ["minecraft:desert", "minecraft:badlands"]}
|
|
},
|
|
{
|
|
"id": "mire", "guardian": {"drops": [["cobblemon:icy_rock", 3], ["cobblemon:super_potion", 4]]}, "lines": 25, "name": "Mangrove Mire", "levels": [25, 38], "hazard": "poison area effect (companion mod)", "color": "#3cb5a0",
|
|
"rule": {"biomes": ["minecraft:mangrove_swamp"]}
|
|
},
|
|
{
|
|
"id": "jungle", "guardian": {"drops": [["cobblemon:pecha_berry", 8], ["cobblemon:exp_candy_m", 2]]}, "lines": 30, "name": "Verdant Jungle", "levels": [18, 30], "hazard": "none (warm and humid, below Cold Sweat's damage)", "color": "#5a8f1e",
|
|
"rule": {"biomes": ["minecraft:jungle"]}
|
|
},
|
|
{
|
|
"id": "highlands", "guardian": {"drops": [["cobblemon:icy_rock", 3], ["cobblemon:super_potion", 4]]}, "lines": 35, "name": "Highland Meadows", "levels": [25, 35], "hazard": "none", "color": "#e3b7d6",
|
|
"rule": {"region": {"z_max": 0, "x_min": -250}}
|
|
},
|
|
{
|
|
"id": "westmarch", "guardian": {"drops": [["cobblemon:pecha_berry", 8], ["cobblemon:exp_candy_m", 2]]}, "lines": 35, "name": "Westmarch", "levels": [15, 25], "hazard": "none", "color": "#2f8f4e",
|
|
"rule": {"region": {"z_max": 0, "x_max": -250}}
|
|
},
|
|
{
|
|
"id": "southwold", "guardian": {"drops": [["cobblemon:great_ball", 6], ["cobblemon:exp_candy_s", 4]]}, "lines": 35, "name": "Southwold", "levels": [8, 18], "hazard": "none", "color": "#7cc576",
|
|
"rule": {"region": {"z_min": 0}}
|
|
},
|
|
{
|
|
"id": "shallows", "lines": 30, "name": "Shallows", "levels": [5, 20], "hazard": "none", "color": "#5aa9e6",
|
|
"rule": {"water": ["minecraft:river", "minecraft:beach", "minecraft:ocean", "minecraft:lukewarm_ocean", "minecraft:warm_ocean"]}
|
|
},
|
|
{
|
|
"id": "deep_sea", "guardian": {"drops": [["cobblemon:mystic_water", 1], ["cobblemon:exp_candy_m", 3]]}, "lines": 20, "name": "Deep Sea", "levels": [30, 50], "hazard": "none", "color": "#1f4e8c",
|
|
"rule": {"water": ["minecraft:deep_ocean", "minecraft:deep_lukewarm_ocean"]}
|
|
}
|
|
],
|
|
"caves": [
|
|
{"id": "lush_caves", "lines": 20, "name": "Lush Caves", "biome": "minecraft:lush_caves", "levels": [12, 28], "hazard": "none"},
|
|
{"id": "dripstone", "lines": 20, "name": "Dripstone Depths", "biome": "minecraft:dripstone_caves", "levels": [22, 38], "hazard": "none"},
|
|
{"id": "deep_dark", "guardian": {"drops": [["cobblemon:icy_rock", 3], ["cobblemon:exp_candy_l", 2]]}, "lines": 20, "name": "Deep Dark", "biome": "minecraft:deep_dark", "levels": [45, 60], "hazard": "darkness (vanilla sculk; no Warden)"},
|
|
{"id": "basalt", "lines": 15, "name": "Basalt Furnace", "biome": "minecraft:basalt_deltas", "levels": [55, 70], "hazard": "heat (Cold Sweat)"}
|
|
]
|
|
}
|