Fix duplicate sub-areas caused by PokeAPI casing (e.g. 1f vs 1F)
PokeAPI returns both lowercase and uppercase floor names as separate sub-areas with identical encounter data, causing 649 duplicate routes across all 22 seed files. Merged case-insensitive duplicates, keeping the uppercase name and deduplicating encounters. Re-seed required. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1712,60 +1712,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (1f)",
|
||||
"order": 32,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 595,
|
||||
"pokemon_name": "Joltik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 39,
|
||||
"min_level": 25,
|
||||
"max_level": 28
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 599,
|
||||
"pokemon_name": "Klink",
|
||||
"method": "walk",
|
||||
"encounter_rate": 24,
|
||||
"min_level": 26,
|
||||
"max_level": 28
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 597,
|
||||
"pokemon_name": "Ferroseed",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 26,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 299,
|
||||
"pokemon_name": "Nosepass",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 27,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 25,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 2,
|
||||
"min_level": 28,
|
||||
"max_level": 28
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B1F)",
|
||||
"order": 33,
|
||||
@@ -1820,60 +1766,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B1f)",
|
||||
"order": 33,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 595,
|
||||
"pokemon_name": "Joltik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 39,
|
||||
"min_level": 28,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 599,
|
||||
"pokemon_name": "Klink",
|
||||
"method": "walk",
|
||||
"encounter_rate": 24,
|
||||
"min_level": 29,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 597,
|
||||
"pokemon_name": "Ferroseed",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 29,
|
||||
"max_level": 30
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 299,
|
||||
"pokemon_name": "Nosepass",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 30,
|
||||
"max_level": 30
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 28,
|
||||
"max_level": 28
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 2,
|
||||
"min_level": 31,
|
||||
"max_level": 31
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B2F)",
|
||||
"order": 34,
|
||||
@@ -1927,60 +1819,6 @@
|
||||
"max_level": 28
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B2f)",
|
||||
"order": 34,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 595,
|
||||
"pokemon_name": "Joltik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 36,
|
||||
"min_level": 28,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 599,
|
||||
"pokemon_name": "Klink",
|
||||
"method": "walk",
|
||||
"encounter_rate": 21,
|
||||
"min_level": 29,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 597,
|
||||
"pokemon_name": "Ferroseed",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 30,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 299,
|
||||
"pokemon_name": "Nosepass",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 30,
|
||||
"max_level": 30
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 8,
|
||||
"min_level": 31,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 28,
|
||||
"max_level": 28
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -2207,36 +2045,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (1f)",
|
||||
"order": 38,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 623,
|
||||
"pokemon_name": "Golurk",
|
||||
"method": "walk",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 55,
|
||||
"max_level": 58
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 621,
|
||||
"pokemon_name": "Druddigon",
|
||||
"method": "walk",
|
||||
"encounter_rate": 30,
|
||||
"min_level": 56,
|
||||
"max_level": 58
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 620,
|
||||
"pokemon_name": "Mienshao",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 55,
|
||||
"max_level": 55
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (1F)",
|
||||
"order": 39,
|
||||
@@ -2268,8 +2076,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (2f)",
|
||||
"order": 39,
|
||||
"name": "Dragonspiral Tower (2F)",
|
||||
"order": 40,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 623,
|
||||
@@ -2334,20 +2142,6 @@
|
||||
"max_level": 58
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (2F)",
|
||||
"order": 40,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 623,
|
||||
"pokemon_name": "Golurk",
|
||||
"method": "walk",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 55,
|
||||
"max_level": 58
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -2528,50 +2322,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (2f)",
|
||||
"order": 46,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 27,
|
||||
"max_level": 30
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (3f)",
|
||||
"order": 47,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 80,
|
||||
"min_level": 28,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 605,
|
||||
"pokemon_name": "Elgyem",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 30,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 42,
|
||||
"pokemon_name": "Golbat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 31,
|
||||
"max_level": 31
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (3F)",
|
||||
"order": 47,
|
||||
@@ -2632,36 +2382,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (4f)",
|
||||
"order": 48,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 65,
|
||||
"min_level": 29,
|
||||
"max_level": 32
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 605,
|
||||
"pokemon_name": "Elgyem",
|
||||
"method": "walk",
|
||||
"encounter_rate": 25,
|
||||
"min_level": 30,
|
||||
"max_level": 32
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 42,
|
||||
"pokemon_name": "Golbat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 32,
|
||||
"max_level": 32
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (5F)",
|
||||
"order": 49,
|
||||
@@ -2691,36 +2411,6 @@
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (5f)",
|
||||
"order": 49,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 605,
|
||||
"pokemon_name": "Elgyem",
|
||||
"method": "walk",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 30,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 30,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 42,
|
||||
"pokemon_name": "Golbat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 33,
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -4948,60 +4638,6 @@
|
||||
"order": 92,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Strange House (1f)",
|
||||
"order": 93,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 30,
|
||||
"min_level": 31,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 577,
|
||||
"pokemon_name": "Solosis",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 31,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 354,
|
||||
"pokemon_name": "Banette",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 32,
|
||||
"max_level": 34
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 42,
|
||||
"pokemon_name": "Golbat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 32,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 20,
|
||||
"pokemon_name": "Raticate",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 32,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 578,
|
||||
"pokemon_name": "Duosion",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 34,
|
||||
"max_level": 34
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Strange House (1F)",
|
||||
"order": 93,
|
||||
@@ -5109,60 +4745,6 @@
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Strange House (B1f)",
|
||||
"order": 94,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 31,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 577,
|
||||
"pokemon_name": "Solosis",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 31,
|
||||
"max_level": 31
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 354,
|
||||
"pokemon_name": "Banette",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 32,
|
||||
"max_level": 34
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 578,
|
||||
"pokemon_name": "Duosion",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 33,
|
||||
"max_level": 34
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 42,
|
||||
"pokemon_name": "Golbat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 32,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 20,
|
||||
"pokemon_name": "Raticate",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 32,
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -5883,130 +5465,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Seaside Cave (1f)",
|
||||
"order": 112,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 592,
|
||||
"pokemon_name": "Frillish",
|
||||
"method": "surf",
|
||||
"encounter_rate": 70,
|
||||
"min_level": 25,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 370,
|
||||
"pokemon_name": "Luvdisc",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 60,
|
||||
"min_level": 40,
|
||||
"max_level": 70
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 90,
|
||||
"pokemon_name": "Shellder",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 40,
|
||||
"max_level": 60
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 55,
|
||||
"pokemon_name": "Golduck",
|
||||
"method": "walk",
|
||||
"encounter_rate": 35,
|
||||
"min_level": 34,
|
||||
"max_level": 36
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 35,
|
||||
"min_level": 34,
|
||||
"max_level": 36
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 86,
|
||||
"pokemon_name": "Seel",
|
||||
"method": "surf",
|
||||
"encounter_rate": 30,
|
||||
"min_level": 25,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 35,
|
||||
"max_level": 37
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 86,
|
||||
"pokemon_name": "Seel",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 35,
|
||||
"max_level": 35
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 37,
|
||||
"max_level": 37
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Seaside Cave (B1f)",
|
||||
"order": 113,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 35,
|
||||
"min_level": 39,
|
||||
"max_level": 42
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 35,
|
||||
"min_level": 39,
|
||||
"max_level": 41
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 55,
|
||||
"pokemon_name": "Golduck",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 40,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 603,
|
||||
"pokemon_name": "Eelektrik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 42,
|
||||
"max_level": 42
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 213,
|
||||
"pokemon_name": "Shuckle",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 41,
|
||||
"max_level": 41
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Seaside Cave (B1F)",
|
||||
"order": 113,
|
||||
|
||||
Reference in New Issue
Block a user