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:
@@ -1704,98 +1704,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B1f)",
|
||||
"order": 36,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 595,
|
||||
"pokemon_name": "Joltik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 39,
|
||||
"min_level": 24,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 599,
|
||||
"pokemon_name": "Klink",
|
||||
"method": "walk",
|
||||
"encounter_rate": 29,
|
||||
"min_level": 25,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 597,
|
||||
"pokemon_name": "Ferroseed",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 25,
|
||||
"max_level": 26
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 24,
|
||||
"max_level": 24
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 2,
|
||||
"min_level": 27,
|
||||
"max_level": 27
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B2f)",
|
||||
"order": 37,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 595,
|
||||
"pokemon_name": "Joltik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 36,
|
||||
"min_level": 24,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 599,
|
||||
"pokemon_name": "Klink",
|
||||
"method": "walk",
|
||||
"encounter_rate": 26,
|
||||
"min_level": 25,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 597,
|
||||
"pokemon_name": "Ferroseed",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 26,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 24,
|
||||
"max_level": 24
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 8,
|
||||
"min_level": 27,
|
||||
"max_level": 27
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (B1F)",
|
||||
"order": 37,
|
||||
@@ -1887,52 +1795,6 @@
|
||||
"max_level": 27
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Chargestone Cave (1f)",
|
||||
"order": 38,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 595,
|
||||
"pokemon_name": "Joltik",
|
||||
"method": "walk",
|
||||
"encounter_rate": 39,
|
||||
"min_level": 24,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 599,
|
||||
"pokemon_name": "Klink",
|
||||
"method": "walk",
|
||||
"encounter_rate": 29,
|
||||
"min_level": 25,
|
||||
"max_level": 27
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 597,
|
||||
"pokemon_name": "Ferroseed",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 24,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 24,
|
||||
"max_level": 24
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 602,
|
||||
"pokemon_name": "Tynamo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 2,
|
||||
"min_level": 27,
|
||||
"max_level": 27
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -2119,36 +1981,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (1f)",
|
||||
"order": 42,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 622,
|
||||
"pokemon_name": "Golett",
|
||||
"method": "walk",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 30,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 621,
|
||||
"pokemon_name": "Druddigon",
|
||||
"method": "walk",
|
||||
"encounter_rate": 30,
|
||||
"min_level": 30,
|
||||
"max_level": 33
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 619,
|
||||
"pokemon_name": "Mienfoo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 33,
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (1F)",
|
||||
"order": 43,
|
||||
@@ -2180,8 +2012,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (2f)",
|
||||
"order": 43,
|
||||
"name": "Dragonspiral Tower (2F)",
|
||||
"order": 44,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 622,
|
||||
@@ -2246,20 +2078,6 @@
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragonspiral Tower (2F)",
|
||||
"order": 44,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 622,
|
||||
"pokemon_name": "Golett",
|
||||
"method": "walk",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 30,
|
||||
"max_level": 33
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -2534,44 +2352,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Victory Road (4f Middle Room)",
|
||||
"order": 52,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 632,
|
||||
"pokemon_name": "Durant",
|
||||
"method": "walk",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 39,
|
||||
"max_level": 42
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 30,
|
||||
"min_level": 39,
|
||||
"max_level": 41
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 39,
|
||||
"max_level": 42
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 619,
|
||||
"pokemon_name": "Mienfoo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 41,
|
||||
"max_level": 41
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Victory Road (1F Unknown Room)",
|
||||
"order": 52,
|
||||
@@ -2918,84 +2698,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Victory Road (1f Unknown Room)",
|
||||
"order": 59,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 550,
|
||||
"pokemon_name": "Basculin Red Striped",
|
||||
"method": "surf",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 20,
|
||||
"max_level": 45
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 60,
|
||||
"pokemon_name": "Poliwag",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 45,
|
||||
"min_level": 35,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 550,
|
||||
"pokemon_name": "Basculin Red Striped",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 35,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 632,
|
||||
"pokemon_name": "Durant",
|
||||
"method": "walk",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 37,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 39,
|
||||
"max_level": 39
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 633,
|
||||
"pokemon_name": "Deino",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 38,
|
||||
"max_level": 40
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 61,
|
||||
"pokemon_name": "Poliwhirl",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 35,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 619,
|
||||
"pokemon_name": "Mienfoo",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 39,
|
||||
"max_level": 39
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 37,
|
||||
"max_level": 37
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Victory Road (Unknown Area 60)",
|
||||
"order": 60,
|
||||
@@ -3180,8 +2882,8 @@
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Celestial Tower (3f)",
|
||||
"order": 65,
|
||||
"name": "Celestial Tower (3F)",
|
||||
"order": 66,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
@@ -3215,72 +2917,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (4f)",
|
||||
"order": 66,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 70,
|
||||
"min_level": 26,
|
||||
"max_level": 29
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 605,
|
||||
"pokemon_name": "Elgyem",
|
||||
"method": "walk",
|
||||
"encounter_rate": 30,
|
||||
"min_level": 26,
|
||||
"max_level": 29
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (3F)",
|
||||
"order": 66,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 85,
|
||||
"min_level": 26,
|
||||
"max_level": 29
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 605,
|
||||
"pokemon_name": "Elgyem",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 26,
|
||||
"max_level": 28
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (5f)",
|
||||
"order": 67,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 605,
|
||||
"pokemon_name": "Elgyem",
|
||||
"method": "walk",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 26,
|
||||
"max_level": 29
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 50,
|
||||
"min_level": 26,
|
||||
"max_level": 29
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (4F)",
|
||||
"order": 67,
|
||||
@@ -3324,20 +2960,6 @@
|
||||
"max_level": 29
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Celestial Tower (2f)",
|
||||
"order": 68,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 607,
|
||||
"pokemon_name": "Litwick",
|
||||
"method": "walk",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 26,
|
||||
"max_level": 29
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -3400,60 +3022,6 @@
|
||||
"order": 70,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Challengers Cave (1f)",
|
||||
"order": 71,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 48,
|
||||
"max_level": 48
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 75,
|
||||
"pokemon_name": "Graveler",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 47,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 108,
|
||||
"pokemon_name": "Lickitung",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 49,
|
||||
"max_level": 50
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 47,
|
||||
"max_level": 47
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 303,
|
||||
"pokemon_name": "Mawile",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 302,
|
||||
"pokemon_name": "Sableye",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Challengers Cave (1F)",
|
||||
"order": 71,
|
||||
@@ -3508,68 +3076,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Challengers Cave (B1f)",
|
||||
"order": 72,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 48,
|
||||
"max_level": 48
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 75,
|
||||
"pokemon_name": "Graveler",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 47,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 47,
|
||||
"max_level": 47
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 108,
|
||||
"pokemon_name": "Lickitung",
|
||||
"method": "walk",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 49,
|
||||
"max_level": 50
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 303,
|
||||
"pokemon_name": "Mawile",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 302,
|
||||
"pokemon_name": "Sableye",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 447,
|
||||
"pokemon_name": "Riolu",
|
||||
"method": "walk",
|
||||
"encounter_rate": 5,
|
||||
"min_level": 49,
|
||||
"max_level": 50
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Challengers Cave (B1F)",
|
||||
"order": 72,
|
||||
@@ -3632,100 +3138,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Challengers Cave (B2f)",
|
||||
"order": 73,
|
||||
"encounters": [
|
||||
{
|
||||
"pokeapi_id": 550,
|
||||
"pokemon_name": "Basculin Red Striped",
|
||||
"method": "surf",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 25,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 60,
|
||||
"pokemon_name": "Poliwag",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 45,
|
||||
"min_level": 35,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 550,
|
||||
"pokemon_name": "Basculin Red Striped",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 40,
|
||||
"min_level": 35,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 525,
|
||||
"pokemon_name": "Boldore",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 48,
|
||||
"max_level": 48
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 75,
|
||||
"pokemon_name": "Graveler",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 47,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 527,
|
||||
"pokemon_name": "Woobat",
|
||||
"method": "walk",
|
||||
"encounter_rate": 20,
|
||||
"min_level": 47,
|
||||
"max_level": 47
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 61,
|
||||
"pokemon_name": "Poliwhirl",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 15,
|
||||
"min_level": 35,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 108,
|
||||
"pokemon_name": "Lickitung",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 303,
|
||||
"pokemon_name": "Mawile",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 447,
|
||||
"pokemon_name": "Riolu",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 50
|
||||
},
|
||||
{
|
||||
"pokeapi_id": 302,
|
||||
"pokemon_name": "Sableye",
|
||||
"method": "walk",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 49,
|
||||
"max_level": 49
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Challengers Cave (B2F)",
|
||||
"order": 73,
|
||||
|
||||
Reference in New Issue
Block a user