Spawn levels: every evolution stage that fits a zone spawns up to its top
Adrian (2026-10-31): Dusclops only spawned at Lv 45-46 in the Deep Dark, because Cobblemon's own range for a stage stops where the next one takes over. Every stage that reaches a zone's band now spawns up to the band's top (Dusclops, Golbat, Doublade 45-60). Wild Pokemon never evolve; a caught one past its evolution level evolves on its next level-up. Island quick check passed (spawn survey and 36 self-tests). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d49684a2eb
commit
610b0d2a47
12 files changed
+277
-277
No files matched your search
+1
-1
@@ -105,7 +105,7 @@ Order of play the bands suggest: Button Isle → Southwold → Westmarch or Jung
|
||||
|
||||
**How zones are built** (Phase 3, step 2):
|
||||
- `tools/zone_layout.py` writes the zone grid to `datapacks/core/data/cobblesurvival/zones/island.json` (24-block cells; caves by cave biome). The companion mod loads it (`zone/Zones.kt`) and adds the spawn-condition field `"zone"`/`"zones"` to every Cobblemon spawn condition. `/cobblesurvival zone` (operators) names the zone you stand in.
|
||||
- Cobblemon's own spawn files are switched off by a filter in `datapacks/core/pack.mcmeta`. `tools/zone_spawns.py` writes one spawn pool per zone (`datapacks/core/data/cobblesurvival/spawn_pool_world/<zone>.json`) from Cobblemon's spawn data: every evolution line that can spawn on the island gets one home zone (none is lost; legendaries, mythicals, Ultra Beasts and Paradox Pokémon stay out), and its levels are clamped into the zone's band, which picks the evolution stages; the line's top stage spawns up to the top of the band (Cobblemon's own ranges stop earlier: the Deep Dark used to top out at Lv 54). Placement weighs how much of the zone is the line's habitat, how much of the line's range the zone covers, and the line's strength (base-stat total of its strongest form) against the zone's band. Lines that Cobblemon lets spawn nearly everywhere first fill the cave zones, which take those whose first stage's primary type fits the cave (`world/zones.json` → caves → `types`; Adrian, 2026-10-30: the deep caves' tables were too small), then are shared out over the land zones by strength. The result per zone is in `docs/zone-species.md`; `world/zones.json` → `species` pins a line by hand.
|
||||
- Cobblemon's own spawn files are switched off by a filter in `datapacks/core/pack.mcmeta`. `tools/zone_spawns.py` writes one spawn pool per zone (`datapacks/core/data/cobblesurvival/spawn_pool_world/<zone>.json`) from Cobblemon's spawn data: every evolution line that can spawn on the island gets one home zone (none is lost; legendaries, mythicals, Ultra Beasts and Paradox Pokémon stay out), and its levels are clamped into the zone's band, which picks the evolution stages; every stage that reaches the band spawns up to its top (Adrian, 2026-10-31; Cobblemon's own ranges stop where the next stage takes over, which left Dusclops at Lv 45–46 in the Deep Dark and the zone topping out at Lv 54). Wild Pokémon never evolve; a caught one past its evolution level evolves on its next level-up. Placement weighs how much of the zone is the line's habitat, how much of the line's range the zone covers, and the line's strength (base-stat total of its strongest form) against the zone's band. Lines that Cobblemon lets spawn nearly everywhere first fill the cave zones, which take those whose first stage's primary type fits the cave (`world/zones.json` → caves → `types`; Adrian, 2026-10-30: the deep caves' tables were too small), then are shared out over the land zones by strength. The result per zone is in `docs/zone-species.md`; `world/zones.json` → `species` pins a line by hand.
|
||||
- Cave zones: every entry spawns in the cave's biome, and sky-light minimums, "can see sky", time of day, excluded biomes and the "natural" ground preset are dropped; otherwise the Deep Dark (fed by Cobblemon's surface "spooky" spawns, many of them night-only) would barely spawn anything, and lush caves' moss floors would barely count.
|
||||
- Strays (Adrian, 2026-10-30: a Lv 61 from the Basalt Furnace turned up in the Lush Caves): every 5 seconds a wild Pokémon near a player that stands in a zone whose band it tops by more than 10 levels despawns, unless it is in a battle, angry at someone or a guardian (`zone/Wanderers.kt`, `world/zones.json` → `wanderers`). Tested: `strays_despawn`.
|
||||
- Basalt Furnace got Durant, Torkoal and Heatmor pinned to it: its own lines were all big (Charizard, Turtonator, Centiskorch, …) and Cobblemon only spawns a Pokémon where its body fits, so cramped basalt caves stayed empty.
|
||||
|
||||
Reference in new issue
Block a user