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
@@ -20,8 +20,9 @@ datapacks/core/data/cobblesurvival/spawn_pool_world/<zone>.json:
|
||||
2. In its home zone a line keeps Cobblemon's spawn entries (bucket, weight, time, light,
|
||||
presets) for the biomes the zone has, plus "zone": "<id>". Levels are clamped into the
|
||||
zone's band, so the band picks the evolution stages: a stage whose levels miss the band
|
||||
doesn't spawn there. If no stage fits, the closest one spawns across the whole band. The
|
||||
line's top stage spawns up to the top of the band (Cobblemon's own ranges stop earlier).
|
||||
doesn't spawn there. If no stage fits, the closest one spawns across the whole band. 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 e.g. Dusclops at Lv 45–46 in the Deep Dark).
|
||||
3. world/zones.json → "species" pins a line to a zone by hand: {"pikachu": "southwold"}.
|
||||
4. In 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 (there's no sky or day underground).
|
||||
@@ -261,10 +262,9 @@ def main():
|
||||
if (zid in cave_zones or b & biomes_of[zid]) and (high or m not in strong_flyers)]
|
||||
if not usable:
|
||||
continue
|
||||
reaching = [u for u in usable if u[3][0] <= hi and u[3][1] >= lo]
|
||||
top = max(reaching, key=lambda u: u[3][1])[2] if reaching else None
|
||||
# The top stage spawns up to the band's top; Cobblemon's own ranges often stop well below it.
|
||||
fitting = [(e, m, max(lv[0], lo), hi if m == top else min(lv[1], hi)) for e, b, m, lv in reaching]
|
||||
# Every stage that reaches the band spawns up to its top; Cobblemon's own ranges stop where the next stage
|
||||
# takes over. A caught one past its evolution level evolves on its next level-up.
|
||||
fitting = [(e, m, max(lv[0], lo), hi) for e, b, m, lv in usable if lv[0] <= hi and lv[1] >= lo]
|
||||
if not fitting:
|
||||
# No stage reaches the band: the closest stage spawns across all of it.
|
||||
e, b, m, lv = min(usable, key=lambda u: min(abs(u[3][0] - hi), abs(u[3][1] - lo)))
|
||||
|
||||
Reference in new issue
Block a user