From 610b0d2a4754d62ffef16146aad34ecf957c6511 Mon Sep 17 00:00:00 2001 From: claude Date: Sat, 31 Oct 2026 02:28:48 +0100 Subject: [PATCH] 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 --- .../spawn_pool_world/deep_dark.json | 14 +- .../spawn_pool_world/deep_sea.json | 122 +++++++++--------- .../spawn_pool_world/dripstone.json | 34 ++--- .../spawn_pool_world/frostpeak.json | 64 ++++----- .../spawn_pool_world/highlands.json | 92 ++++++------- .../spawn_pool_world/jungle.json | 10 +- .../spawn_pool_world/lush_caves.json | 2 +- .../cobblesurvival/spawn_pool_world/mire.json | 44 +++---- .../spawn_pool_world/sunscorch.json | 62 ++++----- .../spawn_pool_world/westmarch.json | 96 +++++++------- docs/design.md | 2 +- tools/zone_spawns.py | 12 +- 12 files changed, 277 insertions(+), 277 deletions(-) diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json index 103e0ec..bc077ef 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_dark.json @@ -210,7 +210,7 @@ "zone": "deep_dark" }, "id": "deep_dark-doublade-2-28", - "level": "45-45", + "level": "45-60", "pokemon": "doublade", "spawnablePositionType": "grounded", "type": "pokemon", @@ -231,7 +231,7 @@ "zone": "deep_dark" }, "id": "deep_dark-dusclops-1-0", - "level": "45-46", + "level": "45-60", "pokemon": "dusclops", "presets": [], "spawnablePositionType": "grounded", @@ -271,7 +271,7 @@ "zone": "deep_dark" }, "id": "deep_dark-gallade-1-14", - "level": "45-52", + "level": "45-60", "pokemon": "gallade", "presets": [], "spawnablePositionType": "grounded", @@ -373,7 +373,7 @@ "zone": "deep_dark" }, "id": "deep_dark-golbat-1-18", - "level": "45-46", + "level": "45-60", "pokemon": "golbat", "presets": [], "spawnablePositionType": "grounded", @@ -396,7 +396,7 @@ "zone": "deep_dark" }, "id": "deep_dark-golbat-4-19", - "level": "45-46", + "level": "45-60", "pokemon": "golbat", "presets": [ "derelict" @@ -574,7 +574,7 @@ "zone": "deep_dark" }, "id": "deep_dark-mrmime-1-10", - "level": "45-46", + "level": "45-60", "pokemon": "mrmime", "presets": [ "urban" @@ -599,7 +599,7 @@ "zone": "deep_dark" }, "id": "deep_dark-mrmime-galarian-4-11", - "level": "45-46", + "level": "45-60", "pokemon": "mrmime galarian", "presets": [ "urban" diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json index a618546..8a18a1b 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/deep_sea.json @@ -79,7 +79,7 @@ "zone": "deep_sea" }, "id": "deep_sea-binacle-2-84", - "level": "30-31", + "level": "30-50", "pokemon": "binacle", "presets": [ "water" @@ -107,7 +107,7 @@ "zone": "deep_sea" }, "id": "deep_sea-binacle-3-85", - "level": "30-31", + "level": "30-50", "pokemon": "binacle", "spawnablePositionType": "fishing", "type": "pokemon", @@ -124,7 +124,7 @@ "zone": "deep_sea" }, "id": "deep_sea-binacle-4-86", - "level": "30-31", + "level": "30-50", "pokemon": "binacle", "spawnablePositionType": "fishing", "type": "pokemon", @@ -153,7 +153,7 @@ "zone": "deep_sea" }, "id": "deep_sea-brionne-3-107", - "level": "30-42", + "level": "30-50", "pokemon": "brionne", "spawnablePositionType": "fishing", "type": "pokemon", @@ -178,7 +178,7 @@ "zone": "deep_sea" }, "id": "deep_sea-brionne-5-108", - "level": "30-42", + "level": "30-50", "pokemon": "brionne", "spawnablePositionType": "fishing", "type": "pokemon", @@ -195,7 +195,7 @@ "zone": "deep_sea" }, "id": "deep_sea-clamperl-1-0", - "level": "30-35", + "level": "30-50", "pokemon": "clamperl", "presets": [ "water" @@ -214,7 +214,7 @@ "zone": "deep_sea" }, "id": "deep_sea-clamperl-3-1", - "level": "30-35", + "level": "30-50", "pokemon": "clamperl", "spawnablePositionType": "fishing", "type": "pokemon", @@ -232,7 +232,7 @@ "zone": "deep_sea" }, "id": "deep_sea-clamperl-4-2", - "level": "30-35", + "level": "30-50", "pokemon": "clamperl", "spawnablePositionType": "fishing", "type": "pokemon", @@ -248,7 +248,7 @@ "zone": "deep_sea" }, "id": "deep_sea-clauncher-1-90", - "level": "30-33", + "level": "30-50", "pokemon": "clauncher", "presets": [ "water" @@ -268,7 +268,7 @@ "zone": "deep_sea" }, "id": "deep_sea-clauncher-2-91", - "level": "30-33", + "level": "30-50", "pokemon": "clauncher", "spawnablePositionType": "fishing", "type": "pokemon", @@ -302,7 +302,7 @@ "zone": "deep_sea" }, "id": "deep_sea-clauncher-3-92", - "level": "30-33", + "level": "30-50", "pokemon": "clauncher", "spawnablePositionType": "fishing", "type": "pokemon", @@ -556,7 +556,7 @@ "zone": "deep_sea" }, "id": "deep_sea-dewott-3-103", - "level": "30-41", + "level": "30-50", "pokemon": "dewott", "spawnablePositionType": "fishing", "type": "pokemon", @@ -986,7 +986,7 @@ "zone": "deep_sea" }, "id": "deep_sea-frillish-1-17", - "level": "30-34", + "level": "30-50", "pokemon": "frillish", "presets": [ "water" @@ -1017,7 +1017,7 @@ "zone": "deep_sea" }, "id": "deep_sea-frillish-2-18", - "level": "30-34", + "level": "30-50", "pokemon": "frillish", "presets": [ "water" @@ -1040,7 +1040,7 @@ "zone": "deep_sea" }, "id": "deep_sea-frillish-3-19", - "level": "30-34", + "level": "30-50", "pokemon": "frillish", "presets": [ "water" @@ -1067,7 +1067,7 @@ "zone": "deep_sea" }, "id": "deep_sea-frillish-5-20", - "level": "30-34", + "level": "30-50", "pokemon": "frillish", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1102,7 +1102,7 @@ "zone": "deep_sea" }, "id": "deep_sea-frillish-6-21", - "level": "30-34", + "level": "30-50", "pokemon": "frillish", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1136,7 +1136,7 @@ "zone": "deep_sea" }, "id": "deep_sea-gorebyss-1-7", - "level": "30-49", + "level": "30-50", "pokemon": "gorebyss", "presets": [ "water" @@ -1161,7 +1161,7 @@ "zone": "deep_sea" }, "id": "deep_sea-gorebyss-3-8", - "level": "30-49", + "level": "30-50", "pokemon": "gorebyss", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1180,7 +1180,7 @@ "zone": "deep_sea" }, "id": "deep_sea-gorebyss-4-9", - "level": "30-49", + "level": "30-50", "pokemon": "gorebyss", "presets": [ "water" @@ -1207,7 +1207,7 @@ "zone": "deep_sea" }, "id": "deep_sea-gorebyss-6-10", - "level": "30-49", + "level": "30-50", "pokemon": "gorebyss", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1225,7 +1225,7 @@ "zone": "deep_sea" }, "id": "deep_sea-horsea-1-27", - "level": "30-30", + "level": "30-50", "pokemon": "horsea", "presets": [ "water" @@ -1248,7 +1248,7 @@ "zone": "deep_sea" }, "id": "deep_sea-horsea-2-28", - "level": "30-30", + "level": "30-50", "pokemon": "horsea", "presets": [ "water" @@ -1273,7 +1273,7 @@ "zone": "deep_sea" }, "id": "deep_sea-horsea-4-29", - "level": "30-30", + "level": "30-50", "pokemon": "horsea", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1312,7 +1312,7 @@ "zone": "deep_sea" }, "id": "deep_sea-horsea-5-30", - "level": "30-30", + "level": "30-50", "pokemon": "horsea", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2092,7 +2092,7 @@ "zone": "deep_sea" }, "id": "deep_sea-mantyke-1-48", - "level": "30-35", + "level": "30-50", "pokemon": "mantyke", "presets": [ "water" @@ -2116,7 +2116,7 @@ "zone": "deep_sea" }, "id": "deep_sea-mantyke-2-49", - "level": "30-35", + "level": "30-50", "pokemon": "mantyke", "presets": [ "water" @@ -2142,7 +2142,7 @@ "zone": "deep_sea" }, "id": "deep_sea-mantyke-3-50", - "level": "30-35", + "level": "30-50", "pokemon": "mantyke", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2165,7 +2165,7 @@ "zone": "deep_sea" }, "id": "deep_sea-mantyke-4-51", - "level": "30-35", + "level": "30-50", "pokemon": "mantyke", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2197,7 +2197,7 @@ "zone": "deep_sea" }, "id": "deep_sea-mantyke-5-52", - "level": "30-35", + "level": "30-50", "pokemon": "mantyke", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2222,7 +2222,7 @@ "zone": "deep_sea" }, "id": "deep_sea-mantyke-6-53", - "level": "30-35", + "level": "30-50", "pokemon": "mantyke", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2306,7 +2306,7 @@ "zone": "deep_sea" }, "id": "deep_sea-oshawott-3-102", - "level": "30-31", + "level": "30-50", "pokemon": "oshawott", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2329,7 +2329,7 @@ "zone": "deep_sea" }, "id": "deep_sea-popplio-3-105", - "level": "30-32", + "level": "30-50", "pokemon": "popplio", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2354,7 +2354,7 @@ "zone": "deep_sea" }, "id": "deep_sea-popplio-5-106", - "level": "30-32", + "level": "30-50", "pokemon": "popplio", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2419,7 +2419,7 @@ "zone": "deep_sea" }, "id": "deep_sea-remoraid-1-54", - "level": "30-30", + "level": "30-50", "pokemon": "remoraid", "presets": [ "water" @@ -2441,7 +2441,7 @@ "zone": "deep_sea" }, "id": "deep_sea-remoraid-2-55", - "level": "30-30", + "level": "30-50", "pokemon": "remoraid", "presets": [ "water" @@ -2460,7 +2460,7 @@ "zone": "deep_sea" }, "id": "deep_sea-remoraid-4-56", - "level": "30-30", + "level": "30-50", "pokemon": "remoraid", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2478,7 +2478,7 @@ "zone": "deep_sea" }, "id": "deep_sea-remoraid-5-57", - "level": "30-30", + "level": "30-50", "pokemon": "remoraid", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2520,7 +2520,7 @@ "zone": "deep_sea" }, "id": "deep_sea-seadra-1-31", - "level": "32-44", + "level": "32-50", "pokemon": "seadra", "presets": [ "water" @@ -2543,7 +2543,7 @@ "zone": "deep_sea" }, "id": "deep_sea-seadra-2-32", - "level": "32-44", + "level": "32-50", "pokemon": "seadra", "presets": [ "water" @@ -2568,7 +2568,7 @@ "zone": "deep_sea" }, "id": "deep_sea-seadra-4-33", - "level": "32-44", + "level": "32-50", "pokemon": "seadra", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2607,7 +2607,7 @@ "zone": "deep_sea" }, "id": "deep_sea-seadra-5-34", - "level": "32-44", + "level": "32-50", "pokemon": "seadra", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2644,7 +2644,7 @@ "zone": "deep_sea" }, "id": "deep_sea-shellder-2-111", - "level": "30-31", + "level": "30-50", "pokemon": "shellder", "presets": [ "water" @@ -2676,7 +2676,7 @@ "zone": "deep_sea" }, "id": "deep_sea-shellder-4-112", - "level": "30-31", + "level": "30-50", "pokemon": "shellder", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2716,7 +2716,7 @@ "zone": "deep_sea" }, "id": "deep_sea-shellder-6-113", - "level": "30-31", + "level": "30-50", "pokemon": "shellder", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2751,7 +2751,7 @@ "zone": "deep_sea" }, "id": "deep_sea-skrelp-1-117", - "level": "30-32", + "level": "30-50", "pokemon": "skrelp", "presets": [ "water" @@ -2776,7 +2776,7 @@ "zone": "deep_sea" }, "id": "deep_sea-skrelp-2-118", - "level": "30-32", + "level": "30-50", "pokemon": "skrelp", "presets": [ "water" @@ -2799,7 +2799,7 @@ "zone": "deep_sea" }, "id": "deep_sea-skrelp-4-119", - "level": "30-32", + "level": "30-50", "pokemon": "skrelp", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2836,7 +2836,7 @@ "zone": "deep_sea" }, "id": "deep_sea-skrelp-5-120", - "level": "30-32", + "level": "30-50", "pokemon": "skrelp", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3043,7 +3043,7 @@ "zone": "deep_sea" }, "id": "deep_sea-staryu-2-125", - "level": "30-34", + "level": "30-50", "pokemon": "staryu", "presets": [ "water" @@ -3073,7 +3073,7 @@ "zone": "deep_sea" }, "id": "deep_sea-staryu-3-126", - "level": "30-34", + "level": "30-50", "pokemon": "staryu", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3098,7 +3098,7 @@ "zone": "deep_sea" }, "id": "deep_sea-staryu-4-127", - "level": "30-34", + "level": "30-50", "pokemon": "staryu", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3130,7 +3130,7 @@ "zone": "deep_sea" }, "id": "deep_sea-staryu-5-128", - "level": "30-34", + "level": "30-50", "pokemon": "staryu", "presets": [ "water" @@ -3162,7 +3162,7 @@ "zone": "deep_sea" }, "id": "deep_sea-staryu-6-129", - "level": "30-34", + "level": "30-50", "pokemon": "staryu", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3189,7 +3189,7 @@ "zone": "deep_sea" }, "id": "deep_sea-staryu-7-130", - "level": "30-34", + "level": "30-50", "pokemon": "staryu", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3350,7 +3350,7 @@ "zone": "deep_sea" }, "id": "deep_sea-wailmer-1-67", - "level": "30-40", + "level": "30-50", "pokemon": "wailmer", "presets": [ "water" @@ -3372,7 +3372,7 @@ "zone": "deep_sea" }, "id": "deep_sea-wailmer-2-68", - "level": "30-40", + "level": "30-50", "pokemon": "wailmer", "presets": [ "water" @@ -3394,7 +3394,7 @@ "zone": "deep_sea" }, "id": "deep_sea-wailmer-3-69", - "level": "30-40", + "level": "30-50", "pokemon": "wailmer", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3411,7 +3411,7 @@ "zone": "deep_sea" }, "id": "deep_sea-wailmer-4-70", - "level": "30-40", + "level": "30-50", "pokemon": "wailmer", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3438,7 +3438,7 @@ "zone": "deep_sea" }, "id": "deep_sea-wailmer-5-71", - "level": "30-40", + "level": "30-50", "pokemon": "wailmer", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3457,7 +3457,7 @@ "zone": "deep_sea" }, "id": "deep_sea-wailmer-6-72", - "level": "30-40", + "level": "30-50", "pokemon": "wailmer", "spawnablePositionType": "fishing", "type": "pokemon", diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json index ad76524..802122d 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/dripstone.json @@ -74,7 +74,7 @@ "zone": "dripstone" }, "id": "dripstone-bagon-2-0", - "level": "22-30", + "level": "22-38", "pokemon": "bagon", "presets": [ "wild" @@ -93,7 +93,7 @@ "zone": "dripstone" }, "id": "dripstone-bagon-3-1", - "level": "22-30", + "level": "22-38", "pokemon": "bagon", "presets": [], "spawnablePositionType": "grounded", @@ -111,7 +111,7 @@ "zone": "dripstone" }, "id": "dripstone-baltoy-1-45", - "level": "22-30", + "level": "22-38", "pokemon": "baltoy", "presets": [], "spawnablePositionType": "grounded", @@ -133,7 +133,7 @@ "zone": "dripstone" }, "id": "dripstone-baltoy-2-46", - "level": "22-30", + "level": "22-38", "pokemon": "baltoy", "presets": [ "desert_pyramid" @@ -151,7 +151,7 @@ "zone": "dripstone" }, "id": "dripstone-beldum-1-4", - "level": "22-30", + "level": "22-38", "pokemon": "beldum", "presets": [], "spawnablePositionType": "grounded", @@ -251,7 +251,7 @@ "zone": "dripstone" }, "id": "dripstone-clefairy-2-6", - "level": "22-32", + "level": "22-38", "pokemon": "clefairy", "presets": [], "spawnablePositionType": "grounded", @@ -275,7 +275,7 @@ "zone": "dripstone" }, "id": "dripstone-cleffa-2-8", - "level": "22-22", + "level": "22-38", "pokemon": "cleffa", "presets": [], "spawnablePositionType": "grounded", @@ -368,7 +368,7 @@ "zone": "dripstone" }, "id": "dripstone-drowzee-1-13", - "level": "22-33", + "level": "22-38", "pokemon": "drowzee", "presets": [ "urban" @@ -471,7 +471,7 @@ "zone": "dripstone" }, "id": "dripstone-espurr-1-39", - "level": "22-36", + "level": "22-38", "pokemon": "espurr", "presets": [ "urban" @@ -496,7 +496,7 @@ "zone": "dripstone" }, "id": "dripstone-fidough-1-28", - "level": "22-31", + "level": "22-38", "pokemon": "fidough", "presets": [ "urban" @@ -515,7 +515,7 @@ "zone": "dripstone" }, "id": "dripstone-geodude-1-35", - "level": "22-30", + "level": "22-38", "pokemon": "geodude", "presets": [ "wild" @@ -738,7 +738,7 @@ "zone": "dripstone" }, "id": "dripstone-milcery-1-41", - "level": "22-27", + "level": "22-38", "pokemon": "milcery", "spawnablePositionType": "grounded", "type": "pokemon", @@ -768,7 +768,7 @@ "zone": "dripstone" }, "id": "dripstone-milcery-3-42", - "level": "22-27", + "level": "22-38", "pokemon": "milcery", "presets": [], "spawnablePositionType": "grounded", @@ -791,7 +791,7 @@ "zone": "dripstone" }, "id": "dripstone-munna-1-26", - "level": "22-29", + "level": "22-38", "pokemon": "munna", "presets": [ "urban" @@ -1006,7 +1006,7 @@ "zone": "dripstone" }, "id": "dripstone-solosis-1-33", - "level": "22-29", + "level": "22-38", "pokemon": "solosis", "presets": [], "spawnablePositionType": "grounded", @@ -1077,7 +1077,7 @@ "zone": "dripstone" }, "id": "dripstone-swirlix-1-17", - "level": "22-34", + "level": "22-38", "pokemon": "swirlix", "spawnablePositionType": "grounded", "type": "pokemon", @@ -1108,7 +1108,7 @@ "zone": "dripstone" }, "id": "dripstone-swirlix-2-18", - "level": "22-34", + "level": "22-38", "pokemon": "swirlix", "presets": [], "spawnablePositionType": "grounded", diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json index 4ce5987..920eb0e 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/frostpeak.json @@ -192,7 +192,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-blue-5-72", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=blue", "spawnablePositionType": "fishing", "type": "pokemon", @@ -217,7 +217,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-blue-6-73", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=blue", "spawnablePositionType": "fishing", "type": "pokemon", @@ -244,7 +244,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-blue-7-74", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=blue", "spawnablePositionType": "fishing", "type": "pokemon", @@ -271,7 +271,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-blue-8-75", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=blue", "spawnablePositionType": "fishing", "type": "pokemon", @@ -296,7 +296,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-red-13-76", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=red", "spawnablePositionType": "fishing", "type": "pokemon", @@ -321,7 +321,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-red-14-77", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=red", "spawnablePositionType": "fishing", "type": "pokemon", @@ -348,7 +348,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-red-15-78", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=red", "spawnablePositionType": "fishing", "type": "pokemon", @@ -375,7 +375,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-red-16-79", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=red", "spawnablePositionType": "fishing", "type": "pokemon", @@ -400,7 +400,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-white-21-80", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=white", "spawnablePositionType": "fishing", "type": "pokemon", @@ -427,7 +427,7 @@ "zone": "frostpeak" }, "id": "frostpeak-basculin-white-23-81", - "level": "40-46", + "level": "40-55", "pokemon": "basculin striped=white", "spawnablePositionType": "fishing", "type": "pokemon", @@ -446,7 +446,7 @@ "zone": "frostpeak" }, "id": "frostpeak-bayleef-1-5", - "level": "40-41", + "level": "40-55", "pokemon": "bayleef", "presets": [ "natural" @@ -722,7 +722,7 @@ "zone": "frostpeak" }, "id": "frostpeak-dartrix-1-30", - "level": "40-42", + "level": "40-55", "pokemon": "dartrix", "presets": [ "natural", @@ -838,7 +838,7 @@ "zone": "frostpeak" }, "id": "frostpeak-duraludon-1-44", - "level": "40-54", + "level": "40-55", "pokemon": "duraludon", "presets": [ "natural", @@ -859,7 +859,7 @@ "zone": "frostpeak" }, "id": "frostpeak-duraludon-2-45", - "level": "40-54", + "level": "40-55", "pokemon": "duraludon", "presets": [ "natural", @@ -916,7 +916,7 @@ "zone": "frostpeak" }, "id": "frostpeak-electabuzz-1-48", - "level": "40-49", + "level": "40-55", "pokemon": "electabuzz", "presets": [ "natural" @@ -978,7 +978,7 @@ "zone": "frostpeak" }, "id": "frostpeak-floragato-1-17", - "level": "40-41", + "level": "40-55", "pokemon": "floragato", "presets": [ "natural" @@ -1002,7 +1002,7 @@ "zone": "frostpeak" }, "id": "frostpeak-fraxure-1-39", - "level": "40-41", + "level": "40-55", "pokemon": "fraxure", "presets": [ "natural", @@ -1031,7 +1031,7 @@ "zone": "frostpeak" }, "id": "frostpeak-froslass-2-16", - "level": "42-48", + "level": "42-55", "pokemon": "froslass", "presets": [ "natural" @@ -1235,7 +1235,7 @@ "zone": "frostpeak" }, "id": "frostpeak-hitmonchan-1-37", - "level": "40-46", + "level": "40-55", "pokemon": "hitmonchan", "presets": [ "natural" @@ -1287,7 +1287,7 @@ "zone": "frostpeak" }, "id": "frostpeak-hitmontop-1-38", - "level": "40-46", + "level": "40-55", "pokemon": "hitmontop", "presets": [ "natural" @@ -1517,7 +1517,7 @@ "zone": "frostpeak" }, "id": "frostpeak-machoke-1-28", - "level": "40-41", + "level": "40-55", "pokemon": "machoke", "presets": [ "natural" @@ -1649,7 +1649,7 @@ "zone": "frostpeak" }, "id": "frostpeak-monferno-1-41", - "level": "40-41", + "level": "40-55", "pokemon": "monferno", "presets": [ "natural", @@ -1672,7 +1672,7 @@ "zone": "frostpeak" }, "id": "frostpeak-primeape-1-55", - "level": "40-46", + "level": "40-55", "pokemon": "primeape", "presets": [ "natural", @@ -1698,7 +1698,7 @@ "zone": "frostpeak" }, "id": "frostpeak-pupitar-1-50", - "level": "40-54", + "level": "40-55", "pokemon": "pupitar", "presets": [ "natural", @@ -1719,7 +1719,7 @@ "zone": "frostpeak" }, "id": "frostpeak-pupitar-2-51", - "level": "40-54", + "level": "40-55", "pokemon": "pupitar", "presets": [ "natural" @@ -1744,7 +1744,7 @@ "zone": "frostpeak" }, "id": "frostpeak-quilladin-1-26", - "level": "40-41", + "level": "40-55", "pokemon": "quilladin", "presets": [ "natural" @@ -1776,7 +1776,7 @@ "zone": "frostpeak" }, "id": "frostpeak-rhydon-1-11", - "level": "42-49", + "level": "42-55", "pokemon": "rhydon", "presets": [ "natural", @@ -1837,7 +1837,7 @@ "zone": "frostpeak" }, "id": "frostpeak-roselia-1-0", - "level": "40-40", + "level": "40-55", "pokemon": "roselia", "presets": [ "natural" @@ -1953,7 +1953,7 @@ "zone": "frostpeak" }, "id": "frostpeak-sneasel-hisuian-2-64", - "level": "40-43", + "level": "40-55", "pokemon": "sneasel hisuian", "presets": [ "natural", @@ -2189,7 +2189,7 @@ "zone": "frostpeak" }, "id": "frostpeak-togetic-1-20", - "level": "40-41", + "level": "40-55", "pokemon": "togetic", "presets": [ "natural" @@ -2273,7 +2273,7 @@ "zone": "frostpeak" }, "id": "frostpeak-vanillish-1-22", - "level": "40-40", + "level": "40-55", "pokemon": "vanillish", "presets": [ "natural" @@ -2308,7 +2308,7 @@ "zone": "frostpeak" }, "id": "frostpeak-vanillish-2-23", - "level": "40-40", + "level": "40-55", "pokemon": "vanillish", "presets": [ "natural" diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json index 844ab9c..e44983b 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/highlands.json @@ -22,7 +22,7 @@ "zone": "highlands" }, "id": "highlands-abra-1-54", - "level": "25-31", + "level": "25-35", "pokemon": "abra", "presets": [ "natural" @@ -165,7 +165,7 @@ "zone": "highlands" }, "id": "highlands-buizel-1-78", - "level": "25-33", + "level": "25-35", "pokemon": "buizel", "presets": [ "natural" @@ -190,7 +190,7 @@ "zone": "highlands" }, "id": "highlands-buizel-2-79", - "level": "25-33", + "level": "25-35", "pokemon": "buizel", "presets": [ "water" @@ -215,7 +215,7 @@ "zone": "highlands" }, "id": "highlands-buizel-3-80", - "level": "25-33", + "level": "25-35", "pokemon": "buizel", "presets": [ "water" @@ -245,7 +245,7 @@ "zone": "highlands" }, "id": "highlands-buizel-4-81", - "level": "25-33", + "level": "25-35", "pokemon": "buizel", "spawnablePositionType": "fishing", "type": "pokemon", @@ -282,7 +282,7 @@ "zone": "highlands" }, "id": "highlands-chewtle-1-116", - "level": "25-28", + "level": "25-35", "pokemon": "chewtle", "presets": [ "natural" @@ -306,7 +306,7 @@ "zone": "highlands" }, "id": "highlands-chewtle-2-117", - "level": "25-28", + "level": "25-35", "pokemon": "chewtle", "presets": [ "water" @@ -334,7 +334,7 @@ "zone": "highlands" }, "id": "highlands-chewtle-3-118", - "level": "25-28", + "level": "25-35", "pokemon": "chewtle", "spawnablePositionType": "fishing", "type": "pokemon", @@ -368,7 +368,7 @@ "zone": "highlands" }, "id": "highlands-chewtle-4-119", - "level": "25-28", + "level": "25-35", "pokemon": "chewtle", "spawnablePositionType": "fishing", "type": "pokemon", @@ -451,7 +451,7 @@ "zone": "highlands" }, "id": "highlands-cottonee-1-1", - "level": "25-28", + "level": "25-35", "pokemon": "cottonee", "presets": [ "natural" @@ -510,7 +510,7 @@ "zone": "highlands" }, "id": "highlands-cyndaquil-1-48", - "level": "25-31", + "level": "25-35", "pokemon": "cyndaquil", "presets": [ "natural" @@ -665,7 +665,7 @@ "zone": "highlands" }, "id": "highlands-electrike-1-50", - "level": "25-30", + "level": "25-35", "pokemon": "electrike", "presets": [ "natural" @@ -755,7 +755,7 @@ "zone": "highlands" }, "id": "highlands-fletchling-1-28", - "level": "25-28", + "level": "25-35", "pokemon": "fletchling", "presets": [ "natural", @@ -1082,7 +1082,7 @@ "zone": "highlands" }, "id": "highlands-hoppip-1-3", - "level": "25-25", + "level": "25-35", "pokemon": "hoppip", "presets": [ "natural", @@ -1109,7 +1109,7 @@ "zone": "highlands" }, "id": "highlands-jigglypuff-1-31", - "level": "25-27", + "level": "25-35", "pokemon": "jigglypuff", "presets": [ "natural" @@ -1140,7 +1140,7 @@ "zone": "highlands" }, "id": "highlands-jigglypuff-2-32", - "level": "25-27", + "level": "25-35", "pokemon": "jigglypuff", "presets": [ "natural" @@ -1227,7 +1227,7 @@ "zone": "highlands" }, "id": "highlands-lechonk-1-57", - "level": "25-25", + "level": "25-35", "pokemon": "lechonk", "presets": [ "natural" @@ -1370,7 +1370,7 @@ "zone": "highlands" }, "id": "highlands-mareep-1-8", - "level": "25-28", + "level": "25-35", "pokemon": "mareep", "presets": [ "natural" @@ -1575,7 +1575,7 @@ "zone": "highlands" }, "id": "highlands-oddish-2-60", - "level": "25-32", + "level": "25-35", "pokemon": "oddish", "presets": [ "natural" @@ -1678,7 +1678,7 @@ "zone": "highlands" }, "id": "highlands-pidgey-1-52", - "level": "25-25", + "level": "25-35", "pokemon": "pidgey", "presets": [ "natural", @@ -1906,7 +1906,7 @@ "zone": "highlands" }, "id": "highlands-poliwag-10-99", - "level": "25-30", + "level": "25-35", "pokemon": "poliwag", "presets": [ "water" @@ -1943,7 +1943,7 @@ "zone": "highlands" }, "id": "highlands-poliwag-11-100", - "level": "25-30", + "level": "25-35", "pokemon": "poliwag", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1975,7 +1975,7 @@ "zone": "highlands" }, "id": "highlands-poliwag-3-96", - "level": "25-30", + "level": "25-35", "pokemon": "poliwag", "presets": [ "natural" @@ -2011,7 +2011,7 @@ "zone": "highlands" }, "id": "highlands-poliwag-4-97", - "level": "25-30", + "level": "25-35", "pokemon": "poliwag", "presets": [ "water" @@ -2046,7 +2046,7 @@ "zone": "highlands" }, "id": "highlands-poliwag-7-98", - "level": "25-30", + "level": "25-35", "pokemon": "poliwag", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2577,7 +2577,7 @@ "zone": "highlands" }, "id": "highlands-psyduck-2-66", - "level": "25-32", + "level": "25-35", "pokemon": "psyduck", "presets": [ "natural" @@ -2613,7 +2613,7 @@ "zone": "highlands" }, "id": "highlands-psyduck-3-67", - "level": "25-32", + "level": "25-35", "pokemon": "psyduck", "presets": [ "water" @@ -2649,7 +2649,7 @@ "zone": "highlands" }, "id": "highlands-psyduck-4-68", - "level": "25-32", + "level": "25-35", "pokemon": "psyduck", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2691,7 +2691,7 @@ "zone": "highlands" }, "id": "highlands-quaxly-1-72", - "level": "25-31", + "level": "25-35", "pokemon": "quaxly", "presets": [ "natural" @@ -2724,7 +2724,7 @@ "zone": "highlands" }, "id": "highlands-quaxly-2-73", - "level": "25-31", + "level": "25-35", "pokemon": "quaxly", "spawnablePositionType": "submerged", "type": "pokemon", @@ -2755,7 +2755,7 @@ "zone": "highlands" }, "id": "highlands-quaxly-3-74", - "level": "25-31", + "level": "25-35", "pokemon": "quaxly", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2927,7 +2927,7 @@ "zone": "highlands" }, "id": "highlands-scorbunny-1-12", - "level": "25-31", + "level": "25-35", "pokemon": "scorbunny", "presets": [ "natural" @@ -3010,7 +3010,7 @@ "zone": "highlands" }, "id": "highlands-sinistea-1-15", - "level": "25-31", + "level": "25-35", "pokemon": "sinistea", "spawnablePositionType": "grounded", "type": "pokemon", @@ -3056,7 +3056,7 @@ "zone": "highlands" }, "id": "highlands-sinistea-2-16", - "level": "25-31", + "level": "25-35", "pokemon": "sinistea", "spawnablePositionType": "grounded", "type": "pokemon", @@ -3081,7 +3081,7 @@ "zone": "highlands" }, "id": "highlands-skiploom-1-4", - "level": "25-34", + "level": "25-35", "pokemon": "skiploom", "presets": [ "natural", @@ -3139,7 +3139,7 @@ "zone": "highlands" }, "id": "highlands-squirtle-1-86", - "level": "25-31", + "level": "25-35", "pokemon": "squirtle", "presets": [ "natural" @@ -3167,7 +3167,7 @@ "zone": "highlands" }, "id": "highlands-squirtle-2-87", - "level": "25-31", + "level": "25-35", "pokemon": "squirtle", "presets": [ "water" @@ -3197,7 +3197,7 @@ "zone": "highlands" }, "id": "highlands-squirtle-3-88", - "level": "25-31", + "level": "25-35", "pokemon": "squirtle", "presets": [ "water" @@ -3225,7 +3225,7 @@ "zone": "highlands" }, "id": "highlands-squirtle-4-89", - "level": "25-31", + "level": "25-35", "pokemon": "squirtle", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3252,7 +3252,7 @@ "zone": "highlands" }, "id": "highlands-squirtle-5-90", - "level": "25-31", + "level": "25-35", "pokemon": "squirtle", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3428,7 +3428,7 @@ "zone": "highlands" }, "id": "highlands-tepig-1-23", - "level": "25-31", + "level": "25-35", "pokemon": "tepig", "presets": [ "natural" @@ -3457,7 +3457,7 @@ "zone": "highlands" }, "id": "highlands-tinkatink-1-124", - "level": "25-30", + "level": "25-35", "pokemon": "tinkatink", "presets": [ "natural", @@ -3516,7 +3516,7 @@ "zone": "highlands" }, "id": "highlands-torchic-1-25", - "level": "25-31", + "level": "25-35", "pokemon": "torchic", "presets": [ "natural" @@ -3572,7 +3572,7 @@ "zone": "highlands" }, "id": "highlands-turtwig-1-40", - "level": "25-32", + "level": "25-35", "pokemon": "turtwig", "presets": [ "natural" @@ -3625,7 +3625,7 @@ "zone": "highlands" }, "id": "highlands-vulpix-1-43", - "level": "25-30", + "level": "25-35", "pokemon": "vulpix", "presets": [ "natural" @@ -3984,7 +3984,7 @@ "zone": "highlands" }, "id": "highlands-zorua-1-46", - "level": "25-33", + "level": "25-35", "pokemon": "zorua", "presets": [ "natural", diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json index 7bb3d2e..ff97b4d 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/jungle.json @@ -70,7 +70,7 @@ "zone": "jungle" }, "id": "jungle-bounsweet-1-3", - "level": "18-21", + "level": "18-30", "pokemon": "bounsweet", "presets": [ "natural", @@ -724,7 +724,7 @@ "zone": "jungle" }, "id": "jungle-pikipek-1-19", - "level": "18-27", + "level": "18-30", "pokemon": "pikipek", "spawnablePositionType": "grounded", "type": "pokemon", @@ -764,7 +764,7 @@ "zone": "jungle" }, "id": "jungle-shroodle-1-22", - "level": "18-29", + "level": "18-30", "pokemon": "shroodle", "presets": [ "natural", @@ -944,7 +944,7 @@ "zone": "jungle" }, "id": "jungle-slakoth-1-24", - "level": "18-28", + "level": "18-30", "pokemon": "slakoth", "presets": [ "natural", @@ -988,7 +988,7 @@ "zone": "jungle" }, "id": "jungle-steenee-1-4", - "level": "18-29", + "level": "18-30", "pokemon": "steenee", "presets": [ "natural" diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json index 61de24d..3bc2b1d 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/lush_caves.json @@ -717,7 +717,7 @@ "zone": "lush_caves" }, "id": "lush_caves-venipede-1-24", - "level": "12-26", + "level": "12-28", "pokemon": "venipede", "presets": [ "wild" diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json index 906409c..7665a94 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/mire.json @@ -46,7 +46,7 @@ "zone": "mire" }, "id": "mire-arrokuda-1-74", - "level": "25-28", + "level": "25-38", "pokemon": "arrokuda", "presets": [ "water" @@ -79,7 +79,7 @@ "zone": "mire" }, "id": "mire-arrokuda-2-75", - "level": "25-28", + "level": "25-38", "pokemon": "arrokuda", "spawnablePositionType": "fishing", "type": "pokemon", @@ -110,7 +110,7 @@ "zone": "mire" }, "id": "mire-arrokuda-3-76", - "level": "25-28", + "level": "25-38", "pokemon": "arrokuda", "presets": [ "water" @@ -145,7 +145,7 @@ "zone": "mire" }, "id": "mire-arrokuda-4-77", - "level": "25-28", + "level": "25-38", "pokemon": "arrokuda", "spawnablePositionType": "fishing", "type": "pokemon", @@ -337,7 +337,7 @@ "zone": "mire" }, "id": "mire-croagunk-1-7", - "level": "25-30", + "level": "25-38", "pokemon": "croagunk", "presets": [ "natural", @@ -582,7 +582,7 @@ "zone": "mire" }, "id": "mire-ducklett-1-9", - "level": "25-31", + "level": "25-38", "pokemon": "ducklett", "presets": [ "natural" @@ -615,7 +615,7 @@ "zone": "mire" }, "id": "mire-ducklett-4-10", - "level": "25-31", + "level": "25-38", "pokemon": "ducklett", "presets": [ "water" @@ -718,7 +718,7 @@ "zone": "mire" }, "id": "mire-froakie-1-23", - "level": "25-31", + "level": "25-38", "pokemon": "froakie", "presets": [ "natural" @@ -749,7 +749,7 @@ "zone": "mire" }, "id": "mire-froakie-2-24", - "level": "25-31", + "level": "25-38", "pokemon": "froakie", "presets": [ "water" @@ -782,7 +782,7 @@ "zone": "mire" }, "id": "mire-froakie-5-25", - "level": "25-31", + "level": "25-38", "pokemon": "froakie", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1098,7 +1098,7 @@ "zone": "mire" }, "id": "mire-karrablast-1-0", - "level": "25-32", + "level": "25-38", "pokemon": "karrablast", "presets": [ "natural" @@ -1375,7 +1375,7 @@ "zone": "mire" }, "id": "mire-mudkip-1-59", - "level": "25-31", + "level": "25-38", "pokemon": "mudkip", "presets": [ "natural" @@ -1408,7 +1408,7 @@ "zone": "mire" }, "id": "mire-mudkip-2-60", - "level": "25-31", + "level": "25-38", "pokemon": "mudkip", "presets": [ "water" @@ -1438,7 +1438,7 @@ "zone": "mire" }, "id": "mire-mudkip-5-61", - "level": "25-31", + "level": "25-38", "pokemon": "mudkip", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1456,7 +1456,7 @@ "zone": "mire" }, "id": "mire-mudkip-7-62", - "level": "25-31", + "level": "25-38", "pokemon": "mudkip", "presets": [ "water" @@ -1488,7 +1488,7 @@ "zone": "mire" }, "id": "mire-mudkip-8-63", - "level": "25-31", + "level": "25-38", "pokemon": "mudkip", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1505,7 +1505,7 @@ "zone": "mire" }, "id": "mire-shelmet-1-5", - "level": "25-31", + "level": "25-38", "pokemon": "shelmet", "presets": [ "natural" @@ -1638,7 +1638,7 @@ "zone": "mire" }, "id": "mire-sobble-1-43", - "level": "25-31", + "level": "25-38", "pokemon": "sobble", "presets": [ "natural" @@ -1664,7 +1664,7 @@ "zone": "mire" }, "id": "mire-sobble-3-44", - "level": "25-31", + "level": "25-38", "pokemon": "sobble", "presets": [ "water" @@ -1691,7 +1691,7 @@ "zone": "mire" }, "id": "mire-sobble-4-45", - "level": "25-31", + "level": "25-38", "pokemon": "sobble", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1714,7 +1714,7 @@ "zone": "mire" }, "id": "mire-surskit-1-17", - "level": "25-27", + "level": "25-38", "pokemon": "surskit", "presets": [ "water" @@ -1929,7 +1929,7 @@ "zone": "mire" }, "id": "mire-tadbulb-1-19", - "level": "25-27", + "level": "25-38", "pokemon": "tadbulb", "presets": [ "natural" diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json index 635196c..ac3506c 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/sunscorch.json @@ -136,7 +136,7 @@ "zone": "sunscorch" }, "id": "sunscorch-braixen-1-4", - "level": "30-41", + "level": "30-45", "pokemon": "braixen", "presets": [ "natural" @@ -192,7 +192,7 @@ "zone": "sunscorch" }, "id": "sunscorch-cacnea-1-37", - "level": "30-34", + "level": "30-45", "pokemon": "cacnea", "presets": [ "natural" @@ -272,7 +272,7 @@ "zone": "sunscorch" }, "id": "sunscorch-capsakid-1-39", - "level": "30-30", + "level": "30-45", "pokemon": "capsakid", "presets": [ "natural" @@ -298,7 +298,7 @@ "zone": "sunscorch" }, "id": "sunscorch-crocalor-1-7", - "level": "30-41", + "level": "30-45", "pokemon": "crocalor", "presets": [ "natural" @@ -325,7 +325,7 @@ "zone": "sunscorch" }, "id": "sunscorch-croconaw-3-68", - "level": "30-41", + "level": "30-45", "pokemon": "croconaw", "spawnablePositionType": "fishing", "type": "pokemon", @@ -345,7 +345,7 @@ "zone": "sunscorch" }, "id": "sunscorch-croconaw-5-69", - "level": "30-41", + "level": "30-45", "pokemon": "croconaw", "spawnablePositionType": "fishing", "type": "pokemon", @@ -386,7 +386,7 @@ "zone": "sunscorch" }, "id": "sunscorch-cubone-1-41", - "level": "30-32", + "level": "30-45", "pokemon": "cubone", "presets": [ "natural", @@ -510,7 +510,7 @@ "zone": "sunscorch" }, "id": "sunscorch-dwebble-1-0", - "level": "30-33", + "level": "30-45", "pokemon": "dwebble", "presets": [ "natural" @@ -618,7 +618,7 @@ "zone": "sunscorch" }, "id": "sunscorch-fennekin-1-3", - "level": "30-31", + "level": "30-45", "pokemon": "fennekin", "presets": [ "natural" @@ -712,7 +712,7 @@ "zone": "sunscorch" }, "id": "sunscorch-fuecoco-1-6", - "level": "30-31", + "level": "30-45", "pokemon": "fuecoco", "presets": [ "natural" @@ -783,7 +783,7 @@ "zone": "sunscorch" }, "id": "sunscorch-hippopotas-1-9", - "level": "30-33", + "level": "30-45", "pokemon": "hippopotas", "presets": [ "natural", @@ -859,7 +859,7 @@ "zone": "sunscorch" }, "id": "sunscorch-krokorok-1-27", - "level": "30-35", + "level": "30-45", "pokemon": "krokorok", "presets": [ "natural", @@ -963,7 +963,7 @@ "zone": "sunscorch" }, "id": "sunscorch-luxio-1-29", - "level": "30-36", + "level": "30-45", "pokemon": "luxio", "presets": [ "natural", @@ -1067,7 +1067,7 @@ "zone": "sunscorch" }, "id": "sunscorch-naclstack-1-12", - "level": "30-36", + "level": "30-45", "pokemon": "naclstack", "presets": [ "natural", @@ -1089,7 +1089,7 @@ "zone": "sunscorch" }, "id": "sunscorch-numel-1-14", - "level": "30-31", + "level": "30-45", "pokemon": "numel", "presets": [ "natural" @@ -1119,7 +1119,7 @@ "zone": "sunscorch" }, "id": "sunscorch-palpitoad-8-72", - "level": "30-38", + "level": "30-45", "pokemon": "palpitoad", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1142,7 +1142,7 @@ "zone": "sunscorch" }, "id": "sunscorch-palpitoad-9-73", - "level": "30-38", + "level": "30-45", "pokemon": "palpitoad", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1187,7 +1187,7 @@ "zone": "sunscorch" }, "id": "sunscorch-phanpy-1-17", - "level": "30-33", + "level": "30-45", "pokemon": "phanpy", "presets": [ "natural", @@ -1233,7 +1233,7 @@ "zone": "sunscorch" }, "id": "sunscorch-poltchageist-artisan-2-20", - "level": "30-31", + "level": "30-45", "pokemon": "poltchageist matcha_authenticity=artisan", "spawnablePositionType": "grounded", "type": "pokemon", @@ -1274,7 +1274,7 @@ "zone": "sunscorch" }, "id": "sunscorch-poltchageist-artisan-4-22", - "level": "30-31", + "level": "30-45", "pokemon": "poltchageist matcha_authenticity=artisan", "spawnablePositionType": "grounded", "type": "pokemon", @@ -1316,7 +1316,7 @@ "zone": "sunscorch" }, "id": "sunscorch-poltchageist-counterfeit-1-19", - "level": "30-31", + "level": "30-45", "pokemon": "poltchageist matcha_authenticity=counterfeit", "spawnablePositionType": "grounded", "type": "pokemon", @@ -1357,7 +1357,7 @@ "zone": "sunscorch" }, "id": "sunscorch-poltchageist-counterfeit-3-21", - "level": "30-31", + "level": "30-45", "pokemon": "poltchageist matcha_authenticity=counterfeit", "spawnablePositionType": "grounded", "type": "pokemon", @@ -1418,7 +1418,7 @@ "zone": "sunscorch" }, "id": "sunscorch-sandshrew-1-55", - "level": "30-30", + "level": "30-45", "pokemon": "sandshrew", "presets": [ "natural" @@ -1560,7 +1560,7 @@ "zone": "sunscorch" }, "id": "sunscorch-scraggy-1-57", - "level": "30-35", + "level": "30-45", "pokemon": "scraggy", "presets": [ "natural" @@ -1586,7 +1586,7 @@ "zone": "sunscorch" }, "id": "sunscorch-scraggy-2-58", - "level": "30-35", + "level": "30-45", "pokemon": "scraggy", "presets": [ "natural", @@ -1616,7 +1616,7 @@ "zone": "sunscorch" }, "id": "sunscorch-scraggy-3-59", - "level": "30-35", + "level": "30-45", "pokemon": "scraggy", "presets": [ "natural" @@ -1680,7 +1680,7 @@ "zone": "sunscorch" }, "id": "sunscorch-silicobra-1-31", - "level": "30-32", + "level": "30-45", "pokemon": "silicobra", "presets": [ "natural", @@ -1924,7 +1924,7 @@ "zone": "sunscorch" }, "id": "sunscorch-skorupi-1-64", - "level": "30-33", + "level": "30-45", "pokemon": "skorupi", "presets": [ "natural", @@ -1952,7 +1952,7 @@ "zone": "sunscorch" }, "id": "sunscorch-totodile-3-66", - "level": "30-31", + "level": "30-45", "pokemon": "totodile", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1972,7 +1972,7 @@ "zone": "sunscorch" }, "id": "sunscorch-totodile-5-67", - "level": "30-31", + "level": "30-45", "pokemon": "totodile", "spawnablePositionType": "fishing", "type": "pokemon", @@ -1990,7 +1990,7 @@ "zone": "sunscorch" }, "id": "sunscorch-vibrava-1-34", - "level": "35-40", + "level": "35-45", "pokemon": "vibrava", "presets": [ "natural", diff --git a/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json b/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json index 1509887..477603d 100644 --- a/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json +++ b/datapacks/core/data/cobblesurvival/spawn_pool_world/westmarch.json @@ -1986,7 +1986,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-1-45", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp", "presets": [ "water" @@ -2009,7 +2009,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-2-46", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp", "presets": [ "water" @@ -2031,7 +2031,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-3-47", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp", "presets": [ "water" @@ -2051,7 +2051,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-4-48", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2070,7 +2070,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-5-49", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2087,7 +2087,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-apricot-stripes-15-71", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=apricot-stripes", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2125,7 +2125,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-apricot-tiger-15-69", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=apricot-tiger", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2163,7 +2163,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-apricot-zebra-15-70", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=apricot-zebra", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2202,7 +2202,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-black-forehead-20-81", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=black-forehead", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2245,7 +2245,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-black-forehead-21-83", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=black-forehead", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2265,7 +2265,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-black-forehead-22-85", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=black-forehead", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2302,7 +2302,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-black-mask-20-82", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=black-mask", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2345,7 +2345,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-black-mask-21-84", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=black-mask", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2365,7 +2365,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-black-mask-22-86", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=black-mask", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2401,7 +2401,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-blue-raindrops-23-88", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=blue-raindrops", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2438,7 +2438,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-blue-saucy-23-87", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=blue-saucy", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2475,7 +2475,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-brown-stripes-16-74", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=brown-stripes", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2513,7 +2513,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-brown-tiger-16-72", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=brown-tiger", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2551,7 +2551,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-brown-zebra-16-73", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=brown-zebra", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2589,7 +2589,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-calico-orange-gold-10-56", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=calico-orange-gold", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2624,7 +2624,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-calico-orange-white-9-53", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=calico-orange-white", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2661,7 +2661,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-calico-orange-white-black-9-54", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=calico-orange-white-black", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2698,7 +2698,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-calico-white-orange-9-55", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=calico-white-orange", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2735,7 +2735,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-gray-bubbles-13-63", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=gray-bubbles", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2773,7 +2773,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-gray-diamonds-13-64", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=gray-diamonds", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2811,7 +2811,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-gray-patches-13-65", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=gray-patches", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2849,7 +2849,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-dapples-11-59", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-dapples", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2889,7 +2889,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-forehead-17-75", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-forehead", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2924,7 +2924,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-forehead-18-77", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-forehead", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2944,7 +2944,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-forehead-19-79", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-forehead", "spawnablePositionType": "fishing", "type": "pokemon", @@ -2973,7 +2973,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-mask-17-76", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-mask", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3008,7 +3008,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-mask-18-78", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-mask", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3028,7 +3028,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-mask-19-80", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-mask", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3056,7 +3056,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-orca-11-58", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-orca", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3095,7 +3095,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-orange-two-tone-11-57", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=orange-two-tone", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3134,7 +3134,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-pink-dapples-12-62", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=pink-dapples", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3172,7 +3172,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-pink-orca-12-61", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=pink-orca", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3210,7 +3210,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-pink-two-tone-12-60", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=pink-two-tone", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3248,7 +3248,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-purple-bubbles-14-66", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=purple-bubbles", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3286,7 +3286,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-purple-diamonds-14-67", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=purple-diamonds", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3324,7 +3324,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-purple-patches-14-68", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=purple-patches", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3363,7 +3363,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-skelly-6-50", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=skelly", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3395,7 +3395,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-skelly-7-51", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=skelly", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3415,7 +3415,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-skelly-8-52", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=skelly", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3440,7 +3440,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-violet-raindrops-24-90", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=violet-raindrops", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3476,7 +3476,7 @@ "zone": "westmarch" }, "id": "westmarch-magikarp-violet-saucy-24-89", - "level": "15-20", + "level": "15-25", "pokemon": "magikarp magikarp_jump=violet-saucy", "spawnablePositionType": "fishing", "type": "pokemon", @@ -3881,7 +3881,7 @@ "zone": "westmarch" }, "id": "westmarch-pichu-1-20", - "level": "15-21", + "level": "15-25", "pokemon": "pichu", "presets": [ "natural" @@ -3985,7 +3985,7 @@ "zone": "westmarch" }, "id": "westmarch-seedot-1-0", - "level": "15-22", + "level": "15-25", "pokemon": "seedot", "presets": [ "natural", diff --git a/docs/design.md b/docs/design.md index 38b8e5d..6a64933 100644 --- a/docs/design.md +++ b/docs/design.md @@ -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/.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/.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. diff --git a/tools/zone_spawns.py b/tools/zone_spawns.py index 3038aa8..14d9f10 100755 --- a/tools/zone_spawns.py +++ b/tools/zone_spawns.py @@ -20,8 +20,9 @@ datapacks/core/data/cobblesurvival/spawn_pool_world/.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": "". 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)))