Add starter, gift, and fossil encounters to seed data
Define special encounter data (starters, gifts, fossils) in a new special_encounters module and merge them into route seed JSON during generation. Add new route locations to ROUTE_ORDER for cities that previously had no wild encounters (Saffron City, Pewter City, etc.). Show colored method badges in the EncounterModal UI for special encounter types. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,30 @@
|
||||
"encounter_rate": 50,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 1,
|
||||
"pokemon_name": "bulbasaur",
|
||||
"method": "starter",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
},
|
||||
{
|
||||
"national_dex": 4,
|
||||
"pokemon_name": "charmander",
|
||||
"method": "starter",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
},
|
||||
{
|
||||
"national_dex": 7,
|
||||
"pokemon_name": "squirtle",
|
||||
"method": "starter",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -445,6 +469,14 @@
|
||||
"encounter_rate": 25,
|
||||
"min_level": 6,
|
||||
"max_level": 12
|
||||
},
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "gift",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1338,12 +1370,50 @@
|
||||
"encounter_rate": 50,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 133,
|
||||
"pokemon_name": "eevee",
|
||||
"method": "gift",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Saffron City",
|
||||
"order": 31,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 131,
|
||||
"pokemon_name": "lapras",
|
||||
"method": "gift",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"national_dex": 106,
|
||||
"pokemon_name": "hitmonlee",
|
||||
"method": "gift",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"national_dex": 107,
|
||||
"pokemon_name": "hitmonchan",
|
||||
"method": "gift",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Route 16",
|
||||
"order": 31,
|
||||
"order": 32,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 21,
|
||||
@@ -1381,7 +1451,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 17",
|
||||
"order": 32,
|
||||
"order": 33,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -1475,7 +1545,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 18",
|
||||
"order": 33,
|
||||
"order": 34,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -1569,7 +1639,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Fuchsia City",
|
||||
"order": 34,
|
||||
"order": 35,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -1631,12 +1701,12 @@
|
||||
},
|
||||
{
|
||||
"name": "Safari Zone",
|
||||
"order": 35,
|
||||
"order": 36,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Safari Zone (Middle)",
|
||||
"order": 36,
|
||||
"order": 37,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -1770,7 +1840,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Safari Zone (Area 1 East)",
|
||||
"order": 37,
|
||||
"order": 38,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -1904,7 +1974,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Safari Zone (Area 2 North)",
|
||||
"order": 38,
|
||||
"order": 39,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -2038,7 +2108,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Safari Zone (Area 3 West)",
|
||||
"order": 39,
|
||||
"order": 40,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -2174,7 +2244,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 15",
|
||||
"order": 40,
|
||||
"order": 41,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 43,
|
||||
@@ -2228,7 +2298,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 14",
|
||||
"order": 41,
|
||||
"order": 42,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 43,
|
||||
@@ -2282,7 +2352,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 13",
|
||||
"order": 42,
|
||||
"order": 43,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -2384,7 +2454,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 12",
|
||||
"order": 43,
|
||||
"order": 44,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -2478,12 +2548,12 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Tower",
|
||||
"order": 44,
|
||||
"order": 45,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Pokemon Tower (3F)",
|
||||
"order": 45,
|
||||
"order": 46,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 92,
|
||||
@@ -2513,36 +2583,6 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Tower (4F)",
|
||||
"order": 46,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 92,
|
||||
"pokemon_name": "gastly",
|
||||
"method": "walk",
|
||||
"encounter_rate": 86,
|
||||
"min_level": 18,
|
||||
"max_level": 24
|
||||
},
|
||||
{
|
||||
"national_dex": 104,
|
||||
"pokemon_name": "cubone",
|
||||
"method": "walk",
|
||||
"encounter_rate": 9,
|
||||
"min_level": 20,
|
||||
"max_level": 22
|
||||
},
|
||||
{
|
||||
"national_dex": 93,
|
||||
"pokemon_name": "haunter",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Tower (5F)",
|
||||
"order": 47,
|
||||
"encounters": [
|
||||
{
|
||||
@@ -2572,8 +2612,38 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Tower (6F)",
|
||||
"name": "Pokemon Tower (5F)",
|
||||
"order": 48,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 92,
|
||||
"pokemon_name": "gastly",
|
||||
"method": "walk",
|
||||
"encounter_rate": 86,
|
||||
"min_level": 18,
|
||||
"max_level": 24
|
||||
},
|
||||
{
|
||||
"national_dex": 104,
|
||||
"pokemon_name": "cubone",
|
||||
"method": "walk",
|
||||
"encounter_rate": 9,
|
||||
"min_level": 20,
|
||||
"max_level": 22
|
||||
},
|
||||
{
|
||||
"national_dex": 93,
|
||||
"pokemon_name": "haunter",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Tower (6F)",
|
||||
"order": 49,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 92,
|
||||
@@ -2603,7 +2673,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Tower (7F)",
|
||||
"order": 49,
|
||||
"order": 50,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 92,
|
||||
@@ -2635,76 +2705,6 @@
|
||||
},
|
||||
{
|
||||
"name": "Sea Route 19",
|
||||
"order": 50,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "old-rod",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
},
|
||||
{
|
||||
"national_dex": 72,
|
||||
"pokemon_name": "tentacool",
|
||||
"method": "surf",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"national_dex": 118,
|
||||
"pokemon_name": "goldeen",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 10,
|
||||
"max_level": 10
|
||||
},
|
||||
{
|
||||
"national_dex": 60,
|
||||
"pokemon_name": "poliwag",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 10,
|
||||
"max_level": 10
|
||||
},
|
||||
{
|
||||
"national_dex": 118,
|
||||
"pokemon_name": "goldeen",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 116,
|
||||
"pokemon_name": "horsea",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 90,
|
||||
"pokemon_name": "shellder",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 120,
|
||||
"pokemon_name": "staryu",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Sea Route 20",
|
||||
"order": 51,
|
||||
"encounters": [
|
||||
{
|
||||
@@ -2774,13 +2774,83 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Seafoam Islands",
|
||||
"name": "Sea Route 20",
|
||||
"order": 52,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "old-rod",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
},
|
||||
{
|
||||
"national_dex": 72,
|
||||
"pokemon_name": "tentacool",
|
||||
"method": "surf",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"national_dex": 118,
|
||||
"pokemon_name": "goldeen",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 10,
|
||||
"max_level": 10
|
||||
},
|
||||
{
|
||||
"national_dex": 60,
|
||||
"pokemon_name": "poliwag",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 10,
|
||||
"max_level": 10
|
||||
},
|
||||
{
|
||||
"national_dex": 118,
|
||||
"pokemon_name": "goldeen",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 116,
|
||||
"pokemon_name": "horsea",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 90,
|
||||
"pokemon_name": "shellder",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 120,
|
||||
"pokemon_name": "staryu",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Seafoam Islands",
|
||||
"order": 53,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Seafoam Islands (1F)",
|
||||
"order": 53,
|
||||
"order": 54,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 116,
|
||||
@@ -2850,7 +2920,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Seafoam Islands (B1F)",
|
||||
"order": 54,
|
||||
"order": 55,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 116,
|
||||
@@ -2912,7 +2982,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Seafoam Islands (B2F)",
|
||||
"order": 55,
|
||||
"order": 56,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 86,
|
||||
@@ -2974,7 +3044,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Seafoam Islands (B3F)",
|
||||
"order": 56,
|
||||
"order": 57,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -3084,7 +3154,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Seafoam Islands (B4F)",
|
||||
"order": 57,
|
||||
"order": 58,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -3196,7 +3266,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Cinnabar Island",
|
||||
"order": 58,
|
||||
"order": 59,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -3253,17 +3323,41 @@
|
||||
"encounter_rate": 25,
|
||||
"min_level": 15,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 138,
|
||||
"pokemon_name": "omanyte",
|
||||
"method": "fossil",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
},
|
||||
{
|
||||
"national_dex": 140,
|
||||
"pokemon_name": "kabuto",
|
||||
"method": "fossil",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
},
|
||||
{
|
||||
"national_dex": 142,
|
||||
"pokemon_name": "aerodactyl",
|
||||
"method": "fossil",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Mansion",
|
||||
"order": 59,
|
||||
"order": 60,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Pokemon Mansion (1F)",
|
||||
"order": 60,
|
||||
"order": 61,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 109,
|
||||
@@ -3317,7 +3411,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Mansion (2F)",
|
||||
"order": 61,
|
||||
"order": 62,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 109,
|
||||
@@ -3371,7 +3465,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Mansion (3F)",
|
||||
"order": 62,
|
||||
"order": 63,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 109,
|
||||
@@ -3425,7 +3519,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon Mansion (B1F)",
|
||||
"order": 63,
|
||||
"order": 64,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 109,
|
||||
@@ -3481,7 +3575,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Sea Route 21",
|
||||
"order": 64,
|
||||
"order": 65,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -3591,7 +3685,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Route 23",
|
||||
"order": 65,
|
||||
"order": 66,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -3693,12 +3787,12 @@
|
||||
},
|
||||
{
|
||||
"name": "Victory Road 2",
|
||||
"order": 66,
|
||||
"order": 67,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Victory Road 2 (1F)",
|
||||
"order": 67,
|
||||
"order": 68,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 95,
|
||||
@@ -3768,7 +3862,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Victory Road 2 (2F)",
|
||||
"order": 68,
|
||||
"order": 69,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 95,
|
||||
@@ -3838,7 +3932,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Victory Road 2 (3F)",
|
||||
"order": 69,
|
||||
"order": 70,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 74,
|
||||
@@ -3910,12 +4004,12 @@
|
||||
},
|
||||
{
|
||||
"name": "Cerulean Cave",
|
||||
"order": 70,
|
||||
"order": 71,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Cerulean Cave (1F)",
|
||||
"order": 71,
|
||||
"order": 72,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -4057,7 +4151,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Cerulean Cave (2F)",
|
||||
"order": 72,
|
||||
"order": 73,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 85,
|
||||
@@ -4135,7 +4229,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Cerulean Cave (B1F)",
|
||||
"order": 73,
|
||||
"order": 74,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -4260,5 +4354,19 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Water Labyrinth",
|
||||
"order": 75,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 175,
|
||||
"pokemon_name": "togepi",
|
||||
"method": "gift",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 5,
|
||||
"max_level": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user