diff --git a/public/images/items.json b/public/images/items.json index f66205872..88c27b5b5 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,11 +4,494 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 210, - "h": 124 + "w": 495, + "h": 73 }, "scale": 1, "frames": [ + { + "filename": "choice_scarf", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 1, + "y": 1, + "w": 24, + "h": 24 + } + }, + { + "filename": "sun_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 1, + "y": 27, + "w": 24, + "h": 24 + } + }, + { + "filename": "dubious_disc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 1, + "y": 53, + "w": 22, + "h": 19 + } + }, + { + "filename": "upgrade", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 25, + "y": 53, + "w": 22, + "h": 19 + } + }, + { + "filename": "big_root", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 27, + "y": 1, + "w": 23, + "h": 24 + } + }, + { + "filename": "kings_rock", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 27, + "y": 27, + "w": 23, + "h": 24 + } + }, + { + "filename": "razor_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 49, + "y": 53, + "w": 20, + "h": 19 + } + }, + { + "filename": "max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 52, + "y": 1, + "w": 22, + "h": 24 + } + }, + { + "filename": "shiny_charm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 21, + "h": 24 + }, + "frame": { + "x": 52, + "y": 27, + "w": 21, + "h": 24 + } + }, + { + "filename": "oval_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 19 + }, + "frame": { + "x": 71, + "y": 53, + "w": 18, + "h": 19 + } + }, + { + "filename": "elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 75, + "y": 27, + "w": 18, + "h": 24 + } + }, + { + "filename": "ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 76, + "y": 1, + "w": 18, + "h": 24 + } + }, + { + "filename": "choice_specs", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 91, + "y": 53, + "w": 24, + "h": 18 + } + }, + { + "filename": "full_restore", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 95, + "y": 27, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 96, + "y": 1, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 115, + "y": 27, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 116, + "y": 1, + "w": 18, + "h": 24 + } + }, + { + "filename": "dragon_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 24, + "h": 18 + }, + "frame": { + "x": 117, + "y": 53, + "w": 24, + "h": 18 + } + }, + { + "filename": "calcium", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 135, + "y": 27, + "w": 16, + "h": 24 + } + }, + { + "filename": "carbos", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 136, + "y": 1, + "w": 16, + "h": 24 + } + }, + { + "filename": "black_glasses", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 143, + "y": 53, + "w": 23, + "h": 17 + } + }, + { + "filename": "hp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 153, + "y": 27, + "w": 16, + "h": 24 + } + }, + { + "filename": "iron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 154, + "y": 1, + "w": 16, + "h": 24 + } + }, { "filename": "everstone", "rotated": false, @@ -24,12 +507,96 @@ "h": 17 }, "frame": { - "x": 1, - "y": 1, + "x": 168, + "y": 53, "w": 20, "h": 17 } }, + { + "filename": "pp_max", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 171, + "y": 27, + "w": 16, + "h": 24 + } + }, + { + "filename": "pp_up", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 172, + "y": 1, + "w": 16, + "h": 24 + } + }, + { + "filename": "protein", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 189, + "y": 27, + "w": 16, + "h": 24 + } + }, + { + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 190, + "y": 1, + "w": 16, + "h": 24 + } + }, { "filename": "revive", "rotated": false, @@ -45,12 +612,642 @@ "h": 17 }, "frame": { - "x": 23, - "y": 1, + "x": 190, + "y": 53, "w": 12, "h": 17 } }, + { + "filename": "prism_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 204, + "y": 53, + "w": 15, + "h": 15 + } + }, + { + "filename": "expert_belt", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 23 + }, + "frame": { + "x": 207, + "y": 27, + "w": 24, + "h": 23 + } + }, + { + "filename": "sacred_ash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 24, + "h": 20 + }, + "frame": { + "x": 221, + "y": 52, + "w": 24, + "h": 20 + } + }, + { + "filename": "scope-lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 23 + }, + "frame": { + "x": 208, + "y": 1, + "w": 24, + "h": 23 + } + }, + { + "filename": "rare_candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 23 + }, + "frame": { + "x": 233, + "y": 26, + "w": 23, + "h": 23 + } + }, + { + "filename": "moon_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 247, + "y": 51, + "w": 23, + "h": 21 + } + }, + { + "filename": "fire_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 234, + "y": 1, + "w": 22, + "h": 23 + } + }, + { + "filename": "focus_sash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 258, + "y": 1, + "w": 22, + "h": 23 + } + }, + { + "filename": "reaper_cloth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 258, + "y": 26, + "w": 22, + "h": 23 + } + }, + { + "filename": "deep_sea_tooth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 272, + "y": 51, + "w": 22, + "h": 21 + } + }, + { + "filename": "leaf_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 282, + "y": 1, + "w": 21, + "h": 23 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 282, + "y": 26, + "w": 17, + "h": 23 + } + }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 296, + "y": 51, + "w": 21, + "h": 21 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 301, + "y": 26, + "w": 17, + "h": 23 + } + }, + { + "filename": "shiny_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 319, + "y": 51, + "w": 21, + "h": 21 + } + }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 305, + "y": 1, + "w": 17, + "h": 23 + } + }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, + "frame": { + "x": 320, + "y": 26, + "w": 15, + "h": 23 + } + }, + { + "filename": "exp_share", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 324, + "y": 1, + "w": 24, + "h": 22 + } + }, + { + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 337, + "y": 25, + "w": 22, + "h": 22 + } + }, + { + "filename": "ice_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 350, + "y": 1, + "w": 22, + "h": 22 + } + }, + { + "filename": "magmarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 342, + "y": 49, + "w": 22, + "h": 22 + } + }, + { + "filename": "protector", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 361, + "y": 25, + "w": 22, + "h": 22 + } + }, + { + "filename": "thunder_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 374, + "y": 1, + "w": 22, + "h": 22 + } + }, + { + "filename": "water_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 366, + "y": 49, + "w": 22, + "h": 22 + } + }, + { + "filename": "metal_coat", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 19, + "h": 22 + }, + "frame": { + "x": 385, + "y": 25, + "w": 19, + "h": 22 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 398, + "y": 1, + "w": 21, + "h": 21 + } + }, + { + "filename": "dawn_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 21 + }, + "frame": { + "x": 390, + "y": 49, + "w": 20, + "h": 21 + } + }, + { + "filename": "binding_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 23, + "h": 20 + }, + "frame": { + "x": 406, + "y": 24, + "w": 23, + "h": 20 + } + }, + { + "filename": "shell_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 23, + "h": 20 + }, + "frame": { + "x": 421, + "y": 1, + "w": 23, + "h": 20 + } + }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 412, + "y": 46, + "w": 22, + "h": 20 + } + }, { "filename": "gb", "rotated": false, @@ -66,54 +1263,12 @@ "h": 20 }, "frame": { - "x": 37, - "y": 1, + "x": 431, + "y": 23, "w": 20, "h": 20 } }, - { - "filename": "golden_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 59, - "y": 1, - "w": 17, - "h": 20 - } - }, - { - "filename": "lucky_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 78, - "y": 1, - "w": 17, - "h": 20 - } - }, { "filename": "mb", "rotated": false, @@ -129,7 +1284,7 @@ "h": 20 }, "frame": { - "x": 97, + "x": 446, "y": 1, "w": 20, "h": 20 @@ -150,7 +1305,7 @@ "h": 20 }, "frame": { - "x": 119, + "x": 468, "y": 1, "w": 20, "h": 20 @@ -171,33 +1326,12 @@ "h": 20 }, "frame": { - "x": 141, - "y": 1, + "x": 436, + "y": 45, "w": 20, "h": 20 } }, - { - "filename": "sacred_ash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 24, - "h": 20 - }, - "frame": { - "x": 163, - "y": 1, - "w": 24, - "h": 20 - } - }, { "filename": "ub", "rotated": false, @@ -213,14 +1347,14 @@ "h": 20 }, "frame": { - "x": 189, - "y": 1, + "x": 453, + "y": 23, "w": 20, "h": 20 } }, { - "filename": "shell_bell", + "filename": "razor_fang", "rotated": false, "trimmed": true, "sourceSize": { @@ -228,20 +1362,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 23, + "x": 7, + "y": 6, + "w": 18, "h": 20 }, "frame": { - "x": 1, - "y": 20, - "w": 23, + "x": 475, + "y": 23, + "w": 18, "h": 20 } }, { - "filename": "dusk_stone", + "filename": "golden_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -249,20 +1383,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 7, "y": 6, - "w": 21, - "h": 21 + "w": 17, + "h": 20 }, "frame": { - "x": 26, - "y": 23, - "w": 21, - "h": 21 + "x": 458, + "y": 45, + "w": 17, + "h": 20 } }, { - "filename": "moon_stone", + "filename": "lucky_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -270,751 +1404,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 7, "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 49, - "y": 23, - "w": 23, - "h": 21 - } - }, - { - "filename": "shiny_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 74, - "y": 23, - "w": 21, - "h": 21 - } - }, - { - "filename": "zoom_lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 97, - "y": 23, - "w": 21, - "h": 21 - } - }, - { - "filename": "exp_share", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 120, - "y": 23, - "w": 24, - "h": 22 - } - }, - { - "filename": "ice_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 146, - "y": 23, - "w": 22, - "h": 22 - } - }, - { - "filename": "thunder_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 170, - "y": 23, - "w": 22, - "h": 22 - } - }, - { - "filename": "full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 - }, - "frame": { - "x": 194, - "y": 23, - "w": 15, - "h": 23 - } - }, - { - "filename": "water_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 1, - "y": 42, - "w": 22, - "h": 22 - } - }, - { - "filename": "expert_belt", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 23 - }, - "frame": { - "x": 25, - "y": 46, - "w": 24, - "h": 23 - } - }, - { - "filename": "fire_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 51, - "y": 46, - "w": 22, - "h": 23 - } - }, - { - "filename": "focus_sash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 75, - "y": 46, - "w": 22, - "h": 23 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, "w": 17, - "h": 23 + "h": 20 }, "frame": { - "x": 99, - "y": 46, + "x": 477, + "y": 45, "w": 17, - "h": 23 - } - }, - { - "filename": "leaf_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 118, - "y": 47, - "w": 21, - "h": 23 - } - }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 141, - "y": 47, - "w": 17, - "h": 23 - } - }, - { - "filename": "rare_candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 160, - "y": 47, - "w": 23, - "h": 23 - } - }, - { - "filename": "scope-lens", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 185, - "y": 48, - "w": 24, - "h": 23 - } - }, - { - "filename": "super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 1, - "y": 66, - "w": 17, - "h": 23 - } - }, - { - "filename": "big_root", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 20, - "y": 71, - "w": 23, - "h": 24 - } - }, - { - "filename": "calcium", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 45, - "y": 71, - "w": 16, - "h": 24 - } - }, - { - "filename": "carbos", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 63, - "y": 71, - "w": 16, - "h": 24 - } - }, - { - "filename": "elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 81, - "y": 71, - "w": 18, - "h": 24 - } - }, - { - "filename": "ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 101, - "y": 72, - "w": 18, - "h": 24 - } - }, - { - "filename": "full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 121, - "y": 72, - "w": 18, - "h": 24 - } - }, - { - "filename": "hp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 141, - "y": 72, - "w": 16, - "h": 24 - } - }, - { - "filename": "iron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 159, - "y": 72, - "w": 16, - "h": 24 - } - }, - { - "filename": "kings_rock", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 177, - "y": 73, - "w": 23, - "h": 24 - } - }, - { - "filename": "pp_max", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 1, - "y": 91, - "w": 16, - "h": 24 - } - }, - { - "filename": "max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 19, - "y": 97, - "w": 18, - "h": 24 - } - }, - { - "filename": "max_ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 39, - "y": 97, - "w": 18, - "h": 24 - } - }, - { - "filename": "max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 59, - "y": 97, - "w": 18, - "h": 24 - } - }, - { - "filename": "pp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 79, - "y": 97, - "w": 16, - "h": 24 - } - }, - { - "filename": "max_revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 97, - "y": 98, - "w": 22, - "h": 24 - } - }, - { - "filename": "protein", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 121, - "y": 98, - "w": 16, - "h": 24 - } - }, - { - "filename": "shiny_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 139, - "y": 98, - "w": 21, - "h": 24 - } - }, - { - "filename": "sun_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 162, - "y": 99, - "w": 24, - "h": 24 - } - }, - { - "filename": "zinc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 188, - "y": 99, - "w": 16, - "h": 24 + "h": 20 } } ] @@ -1023,6 +1422,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f6d42f3902a6c864624ba8b4c713ac70:810a6f167460a184bbc1cb505f67095f:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:f9500d2be195f664ab2742e8bff67e78:c93fc6a52a52ea31b6f9d0d0e3eb37cc:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index ca7d70ae4..ea38f514c 100644 Binary files a/public/images/items.png and b/public/images/items.png differ diff --git a/public/images/items/binding_band.png b/public/images/items/binding_band.png new file mode 100644 index 000000000..f634b0205 Binary files /dev/null and b/public/images/items/binding_band.png differ diff --git a/public/images/items/black_glasses.png b/public/images/items/black_glasses.png new file mode 100644 index 000000000..52fe0e60a Binary files /dev/null and b/public/images/items/black_glasses.png differ diff --git a/public/images/items/choice_scarf.png b/public/images/items/choice_scarf.png new file mode 100644 index 000000000..a83fd1f4b Binary files /dev/null and b/public/images/items/choice_scarf.png differ diff --git a/public/images/items/choice_specs.png b/public/images/items/choice_specs.png new file mode 100644 index 000000000..513986c52 Binary files /dev/null and b/public/images/items/choice_specs.png differ diff --git a/public/images/items/dawn_stone.png b/public/images/items/dawn_stone.png new file mode 100644 index 000000000..0e3da0866 Binary files /dev/null and b/public/images/items/dawn_stone.png differ diff --git a/public/images/items/deep_sea_scale.png b/public/images/items/deep_sea_scale.png new file mode 100644 index 000000000..6a84b01c9 Binary files /dev/null and b/public/images/items/deep_sea_scale.png differ diff --git a/public/images/items/deep_sea_tooth.png b/public/images/items/deep_sea_tooth.png new file mode 100644 index 000000000..448c84068 Binary files /dev/null and b/public/images/items/deep_sea_tooth.png differ diff --git a/public/images/items/dragon_scale.png b/public/images/items/dragon_scale.png new file mode 100644 index 000000000..bb8bb028d Binary files /dev/null and b/public/images/items/dragon_scale.png differ diff --git a/public/images/items/dubious_disc.png b/public/images/items/dubious_disc.png new file mode 100644 index 000000000..8bb234974 Binary files /dev/null and b/public/images/items/dubious_disc.png differ diff --git a/public/images/items/electirizer.png b/public/images/items/electirizer.png new file mode 100644 index 000000000..7d4488d0f Binary files /dev/null and b/public/images/items/electirizer.png differ diff --git a/public/images/items/magmarizer.png b/public/images/items/magmarizer.png new file mode 100644 index 000000000..0fca34c1e Binary files /dev/null and b/public/images/items/magmarizer.png differ diff --git a/public/images/items/metal_coat.png b/public/images/items/metal_coat.png new file mode 100644 index 000000000..f016d48bd Binary files /dev/null and b/public/images/items/metal_coat.png differ diff --git a/public/images/items/oval_stone.png b/public/images/items/oval_stone.png new file mode 100644 index 000000000..d48b06888 Binary files /dev/null and b/public/images/items/oval_stone.png differ diff --git a/public/images/items/prism_scale.png b/public/images/items/prism_scale.png new file mode 100644 index 000000000..5a0d45c68 Binary files /dev/null and b/public/images/items/prism_scale.png differ diff --git a/public/images/items/protector.png b/public/images/items/protector.png new file mode 100644 index 000000000..a7b01a8c5 Binary files /dev/null and b/public/images/items/protector.png differ diff --git a/public/images/items/razor_claw.png b/public/images/items/razor_claw.png new file mode 100644 index 000000000..a9541c4d2 Binary files /dev/null and b/public/images/items/razor_claw.png differ diff --git a/public/images/items/razor_fang.png b/public/images/items/razor_fang.png new file mode 100644 index 000000000..77c3da44c Binary files /dev/null and b/public/images/items/razor_fang.png differ diff --git a/public/images/items/reaper_cloth.png b/public/images/items/reaper_cloth.png new file mode 100644 index 000000000..a86714bfc Binary files /dev/null and b/public/images/items/reaper_cloth.png differ diff --git a/public/images/items/shiny_charm.png b/public/images/items/shiny_charm.png index 9d72fe465..0214ec491 100644 Binary files a/public/images/items/shiny_charm.png and b/public/images/items/shiny_charm.png differ diff --git a/public/images/items/upgrade.png b/public/images/items/upgrade.png new file mode 100644 index 000000000..38db96a17 Binary files /dev/null and b/public/images/items/upgrade.png differ diff --git a/src/arena.ts b/src/arena.ts deleted file mode 100644 index d5820cafd..000000000 --- a/src/arena.ts +++ /dev/null @@ -1,211 +0,0 @@ -import BattleScene from "./battle-scene"; -import { default as PokemonSpecies, allSpecies, getPokemonSpecies } from "./pokemon-species"; -import { Stat } from "./pokemon-stat"; -import { Species } from "./species"; -import { Type } from './type'; -import * as Utils from './utils'; - -export enum ArenaType { - PLAINS = 1, - GRASS, - FOREST, - WATER, - SWAMP, - SEA, - MOUNTAIN, - LAND, - CAVE, - DESERT, - ICE_CAVE, - MEADOW, - POWER_PLANT, - VOLCANO, - GRAVEYARD, - DOJO, - RUINS, - ABYSS, - SPACE -}; - -enum PoolTier { - COMMON, - UNCOMMON, - RARE, - ULTRA_RARE, - LEGENDARY -}; - -export class Arena { - private scene: BattleScene; - public arenaType: integer; - private bgm: string; - - private pokemonPool: PokemonSpecies[][]; - - constructor(scene: BattleScene, arenaType: integer, bgm: string) { - this.scene = scene; - this.arenaType = arenaType; - this.bgm = bgm; - - if (arenaPools.hasOwnProperty(arenaType)) - this.pokemonPool = arenaPools[arenaType]; - else { - const predicate = arenaPoolPredicates[arenaType] || (() => {}); - this.pokemonPool = Utils.getEnumValues(PoolTier).map(t => allSpecies.filter(p => predicate(p, t))); - } - } - randomSpecies(waveIndex: integer): PokemonSpecies { - const tierValue = Utils.randInt(512); - const tier = tierValue >= 156 ? PoolTier.COMMON : tierValue >= 32 ? PoolTier.UNCOMMON : tierValue >= 6 ? PoolTier.RARE : tierValue >= 1 ? PoolTier.ULTRA_RARE : PoolTier.LEGENDARY; - const tierPool = this.pokemonPool[tier]; - let ret: PokemonSpecies; - if (!tierPool.length) - ret = this.scene.randomSpecies(); - else { - const species = tierPool[Utils.randInt(tierPool.length)]; - ret = species instanceof PokemonSpecies ? species : getPokemonSpecies(species); - } - const newSpeciesId = ret.getSpeciesForLevel(5); - if (newSpeciesId !== ret.speciesId) { - console.log('Replaced', Species[ret.speciesId], 'with', Species[newSpeciesId]); - ret = getPokemonSpecies(newSpeciesId); - } - return ret; - } - - playBgm() { - this.scene.loadBgm(this.bgm); - this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => this.scene.playBgm(this.bgm)); - } -} - -const arenaPools = { - [ArenaType.PLAINS]: { - [PoolTier.COMMON]: [ - Species.CATERPIE, Species.METAPOD, Species.WEEDLE, Species.KAKUNA, Species.PIDGEY, Species.RATTATA, Species.SPEAROW, Species.SENTRET, Species.HOOTHOOT, Species.LEDYBA, - Species.HOPPIP, Species.SUNKERN, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.SILCOON, Species.CASCOON, Species.TAILLOW, Species.STARLY, Species.BIDOOF, - Species.KRICKETOT, Species.PATRAT, Species.LILLIPUP, Species.PIDOVE, Species.COTTONEE, Species.PETILIL, Species.MINCCINO, Species.FOONGUS - ], - [PoolTier.UNCOMMON]: [ - Species.EKANS, Species.NIDORAN_F, Species.NIDORAN_M, Species.ODDISH, Species.PARAS, Species.VENONAT, Species.MEOWTH, Species.BELLSPROUT, Species.PICHU, Species.IGGLYBUFF, - Species.LOTAD, Species.SEEDOT, Species.SHROOMISH, Species.NINCADA, Species.AZURILL, Species.WHISMUR, Species.SKITTY, Species.BUDEW, Species.COMBEE, Species.CHERUBI, - Species.VENIPEDE - ], - [PoolTier.RARE]: [ Species.ABRA, Species.CLEFFA, Species.WOOPER, Species.RALTS, Species.SURSKIT, Species.SLAKOTH, Species.DUCKLETT ], - [PoolTier.ULTRA_RARE]: [ Species.EEVEE, Species.TOGEPI, Species.SMEARGLE, Species.TYROGUE, Species.WYNAUT ], - [PoolTier.LEGENDARY]: [ Species.DITTO ] - } -}; - -const arenaPoolPredicates = { - [ArenaType.PLAINS]: (p, t) => { - if (p.isOfType(Type.GHOST) || p.isOfType(Type.STEEL) || p.isOfType(Type.ICE) || p.isOfType(Type.DRAGON)) - return false; - for (let s in p.baseStats) { - let threshold: integer; - const stat = parseInt(s); - switch (stat) { - case Stat.HP: - threshold = 70; - break; - default: - threshold = 60; - break; - } - if (p.baseStats[s] > threshold) { - if (p.baseTotal <= 300 && p.baseExp <= 75 && (p.isOfType(Type.NORMAL) || p.isOfType(Type.BUG) || p.isOfType(Type.GRASS))) - return true; - return false; - } - } - return p.baseTotal <= 320 && p.baseExp <= 75; - }, - [ArenaType.GRASS]: (p, t) => { - switch (t) { - case PoolTier.ULTRA_RARE: - return [ Species.ENTEI, Species.SUICUNE, Species.RAIKOU, Species.LATIOS, Species.LATIAS ].map(s => getPokemonSpecies(s)); - case PoolTier.LEGENDARY: - return [ Species.MEW ].map(s => getPokemonSpecies(s)); - } - return p.isOfType(Type.NORMAL) || p.isOfType(Type.FAIRY) || p.isOfType(Type.GRASS) || p.isOfType(Type.BUG) || p.isOfType(Type.ELECTRIC); - }, - [ArenaType.FOREST]: (p, t) => { - switch (t) { - case PoolTier.LEGENDARY: - return getPokemonSpecies(Species.CELEBI); - } - return p.isOfType(Type.GRASS) || p.isOfType(Type.BUG) || p.isOfType(Type.POISON); - }, - [ArenaType.WATER]: (p, t) => { - switch (t) { - case PoolTier.ULTRA_RARE: - return [ Species.UXIE, Species.MESPRIT, Species.AZELF ].map(s => getPokemonSpecies(s)); - } - return p.isOfType(Type.WATER) - }, - [ArenaType.SWAMP]: (p, t) => { - return p.isOfType(Type.GRASS) || p.isOfType(Type.WATER) || p.isOfType(Type.POISON); - }, - [ArenaType.SEA]: (p, t) => { - switch (t) { - case PoolTier.ULTRA_RARE: - return [ Species.KYOGRE ].map(s => getPokemonSpecies(s)); - case PoolTier.LEGENDARY: - return [ Species.LUGIA ].map(s => getPokemonSpecies(s)); - } - return p.isOfType(Type.WATER); - }, - [ArenaType.MOUNTAIN]: (p, t) => { - switch (t) { - case PoolTier.ULTRA_RARE: - return [ Species.ARTICUNO, Species.ZAPDOS, Species.MOLTRES ].map(s => getPokemonSpecies(s)); - break; - case PoolTier.LEGENDARY: - return [ Species.HO_OH, Species.RAYQUAZA ].map(s => getPokemonSpecies(s)); - } - return p.isOfType(Type.FLYING) || p.isOfType(Type.GROUND) || p.isOfType(Type.ROCK) || p.isOfType(Type.ELECTRIC) || p.isOfType(Type.STEEL); - }, - [ArenaType.LAND]: (p, t) => { - switch (t) { - case PoolTier.ULTRA_RARE: - return [ Species.GROUDON ].map(s => getPokemonSpecies(s)); - } - return p.isOfType(Type.GROUND); - }, - [ArenaType.CAVE]: (p, t) => { - switch (t) { - case PoolTier.ULTRA_RARE: - return [ Species.REGIROCK, Species.REGICE, Species.REGISTEEL ].map(s => getPokemonSpecies(s)); - case PoolTier.LEGENDARY: - return [ Species.MEWTWO, Species.REGIGIGAS ].map(s => getPokemonSpecies(s)); - } - return p.isOfType(Type.ROCK); - }, - [ArenaType.DESERT]: (p, t) => { - return p.isOfType(Type.GROUND) || p.isOfType(Type.ROCK); - }, - [ArenaType.ICE_CAVE]: (p, t) => { - return p.isOfType(Type.ICE); - }, - [ArenaType.MEADOW]: (p, t) => { - return p.isOfType(Type.FAIRY); - }, - [ArenaType.POWER_PLANT]: (p, t) => { - return p.isOfType(Type.ELECTRIC); - }, - [ArenaType.VOLCANO]: (p, t) => { - return p.isOfType(Type.FIRE); - }, - [ArenaType.GRAVEYARD]: (p, t) => { - return p.isOfType(Type.GHOST); - }, - [ArenaType.DOJO]: (p, t) => { - return p.isOfType(Type.FIGHTING); - }, - [ArenaType.RUINS]: (p, t) => { - return p.isOfType(Type.PSYCHIC); - }, - [ArenaType.ABYSS]: (p, t) => { - return p.isOfType(Type.DARK); - } -}; \ No newline at end of file diff --git a/src/battle-phase.ts b/src/battle-phase.ts index 5bdb8ce9a..bcac6224f 100644 --- a/src/battle-phase.ts +++ b/src/battle-phase.ts @@ -6,7 +6,7 @@ import { Mode } from './ui/ui'; import { Command } from "./ui/command-ui-handler"; import { interp } from "./temp_interpreter"; import { Stat } from "./pokemon-stat"; -import { ExpBoosterModifier, ExtraModifierModifier, getModifierTypesForWave, ModifierType, PokemonModifierType, regenerateModifierPoolThresholds } from "./modifier"; +import { ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, getModifierTypesForWave, ModifierType, PokemonModifierType, regenerateModifierPoolThresholds } from "./modifier"; import PartyUiHandler from "./ui/party-ui-handler"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor as getPokeballTintColor, PokeballType } from "./pokeball"; import { pokemonLevelMoves } from "./pokemon-level-moves"; @@ -68,14 +68,12 @@ export class NextEncounterPhase extends BattlePhase { start() { super.start(); - this.scene.waveIndex++; - console.log(this.scene.getPlayerPokemon(), this.scene.getParty().map(p => p.name), this.scene.getPlayerPokemon().id) this.scene.getEnemyPokemon().destroy(); - const newEnemyPokemon = new EnemyPokemon(this.scene, this.scene.randomSpecies(true), this.scene.getLevelForWave()); + const newEnemyPokemon = new EnemyPokemon(this.scene, this.scene.randomSpecies(true), this.scene.getLevelForNextWave()); newEnemyPokemon.loadAssets().then(() => { - this.scene.setEnemyPokemon(newEnemyPokemon); + this.scene.newBattle(newEnemyPokemon); this.scene.field.add(newEnemyPokemon); this.scene.field.moveBelow(newEnemyPokemon, this.scene.getPlayerPokemon()); newEnemyPokemon.tint(0, 0.5); @@ -169,7 +167,10 @@ export class SummonPhase extends BattlePhase { onComplete: () => { playerPokemon.cry(); playerPokemon.getSprite().clearTint(); - this.scene.time.delayedCall(1000, () => this.end()); + this.scene.time.delayedCall(1000, () => { + this.scene.currentBattle.addParticipant(playerPokemon); + this.end(); + }); } }); } @@ -245,7 +246,13 @@ export class CheckSwitchPhase extends BattlePhase { super.start(); this.scene.ui.showText('Will you switch\nPOKéMON?', null, () => { - this.scene.ui.setMode(Mode.SWITCH_CHECK, () => this.end()); + this.scene.ui.setMode(Mode.SWITCH_CHECK, () => { + console.log('handler', this.scene.ui.getHandler()); + console.log(this.scene.ui.getHandler().getCursor()) + if (this.scene.ui.getHandler().getCursor()) + this.scene.currentBattle.addParticipant(this.scene.getPlayerPokemon()); + this.end(); + }); }); } } @@ -321,6 +328,20 @@ export abstract class PokemonPhase extends BattlePhase { } } +export abstract class PartyMemberPokemonPhase extends PokemonPhase { + protected partyMemberIndex: integer; + + constructor(scene: BattleScene, partyMemberIndex: integer) { + super(scene, true); + + this.partyMemberIndex = partyMemberIndex; + } + + getPokemon() { + return this.scene.getParty()[this.partyMemberIndex]; + } +} + abstract class MovePhase extends BattlePhase { protected pokemon: Pokemon; protected move: PokemonMove; @@ -474,6 +495,8 @@ export class FaintPhase extends PokemonPhase { onComplete: () => { pokemon.setVisible(false); pokemon.y -= 150; + if (pokemon instanceof PlayerPokemon) + this.scene.currentBattle.removeFaintedParticipant(pokemon as PlayerPokemon); this.scene.field.remove(pokemon); this.end(); } @@ -490,8 +513,28 @@ export class VictoryPhase extends PokemonPhase { start() { super.start(); - if (this.scene.getPlayerPokemon().level < 100) - this.scene.unshiftPhase(new ExpPhase(this.scene)); + const participantIds = this.scene.currentBattle.playerParticipantIds; + const party = this.scene.getParty(); + const expShareModifier = this.scene.getModifier(ExpShareModifier) as ExpShareModifier; + const expValue = this.scene.getEnemyPokemon().getExpValue(party[0]); + for (let pm = 0; pm < party.length; pm++) { + const pokemon = party[pm]; + if (!pokemon.hp) + continue; + const pId = pokemon.id; + const participated = participantIds.has(pId); + if (!participated && !expShareModifier) + continue; + if (pokemon.level < 100) { + let expMultiplier = 0; + if (participated) + expMultiplier += (1 / participantIds.size); + if (expShareModifier) + expMultiplier += expShareModifier.stackCount * 0.1; + console.log(pokemon.species.name, expMultiplier) + this.scene.unshiftPhase(new ExpPhase(this.scene, pm, expValue * expMultiplier)); + } + } this.scene.unshiftPhase(new SelectModifierPhase(this.scene)); this.scene.unshiftPhase(new NextEncounterPhase(this.scene)); @@ -522,17 +565,22 @@ export class SwitchPhase extends BattlePhase { } } -export class ExpPhase extends PokemonPhase { - constructor(scene: BattleScene) { - super(scene, true); +export class ExpPhase extends PartyMemberPokemonPhase { + private expValue: number; + + constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { + super(scene, partyMemberIndex); + + this.expValue = expValue; } start() { super.start(); const pokemon = this.getPokemon(); - let exp = new Utils.IntegerHolder(this.scene.getEnemyPokemon().getExpValue(pokemon.level)); + let exp = new Utils.NumberHolder(this.expValue); this.scene.applyModifiers(ExpBoosterModifier, exp); + exp.value = Math.floor(exp.value); this.scene.ui.showText(`${pokemon.name} gained\n${exp.value} EXP. Points!`, null, () => { const lastLevel = pokemon.level; let newLevel: integer; @@ -543,6 +591,8 @@ export class ExpPhase extends PokemonPhase { pokemon.updateInfo(() => this.end()); }, null, true); } + + } export class LevelUpPhase extends PokemonPhase { diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 5a22d7739..55d76f4ea 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1,5 +1,5 @@ import Phaser from 'phaser'; -import { ArenaType, Arena } from './arena'; +import { Biome, BiomeArena } from './biome'; import UI from './ui/ui'; import { BattlePhase, EncounterPhase, SummonPhase, CommandPhase } from './battle-phase'; import { PlayerPokemon, EnemyPokemon } from './pokemon'; @@ -9,6 +9,7 @@ import { Modifier, ModifierBar, ConsumablePokemonModifier, ConsumableModifier, P import { PokeballType } from './pokeball'; import { Species } from './species'; import { initAutoPlay } from './auto-play'; +import { Battle } from './battle'; export default class BattleScene extends Phaser.Scene { private auto: boolean; @@ -17,7 +18,7 @@ export default class BattleScene extends Phaser.Scene { private phaseQueue: Array; private phaseQueuePrepend: Array; private currentPhase: BattlePhase; - private arena: Arena; + private arena: BiomeArena; public field: Phaser.GameObjects.Container; public fieldUI: Phaser.GameObjects.Container; public arenaBg: Phaser.GameObjects.Image; @@ -25,12 +26,11 @@ export default class BattleScene extends Phaser.Scene { public arenaEnemy: Phaser.GameObjects.Image; public arenaEnemy2: Phaser.GameObjects.Image; public trainer: Phaser.GameObjects.Sprite; - public waveIndex: integer; + public currentBattle: Battle; public pokeballCounts = Object.fromEntries(Utils.getEnumValues(PokeballType).map(t => [ t, 0 ])); private party: PlayerPokemon[]; private modifierBar: ModifierBar; private modifiers: Modifier[]; - private enemyPokemon: EnemyPokemon; public uiContainer: Phaser.GameObjects.Container; public ui: UI; @@ -117,8 +117,8 @@ export default class BattleScene extends Phaser.Scene { this.loadAtlas('party_cancel', 'ui'); // Load arena images - Utils.getEnumValues(ArenaType).map(at => { - const atKey = ArenaType[at].toLowerCase(); + Utils.getEnumValues(Biome).map(at => { + const atKey = Biome[at].toLowerCase(); this.loadImage(`${atKey}_bg`, 'arenas', `${atKey}_bg.png`); this.loadImage(`${atKey}_a`, 'arenas', `${atKey}_a.png`); this.loadImage(`${atKey}_b`, 'arenas', `${atKey}_b.png`); @@ -177,15 +177,15 @@ export default class BattleScene extends Phaser.Scene { this.field = field; // Init arena - const arenas = Utils.getEnumValues(ArenaType).map(at => new Arena(this, at, ArenaType[at].toLowerCase())); + const arenas = Utils.getEnumValues(Biome).map(at => new BiomeArena(this, at, Biome[at].toLowerCase())); const arena = arenas[Utils.randInt(11)]; this.arena = arena; - this.arenaBg = this.add.image(0, 0, `${ArenaType[arena.arenaType].toLowerCase()}_bg`); - this.arenaPlayer = this.add.image(340, 20, `${ArenaType[arena.arenaType].toLowerCase()}_a`); - this.arenaEnemy = this.add.image(-240, 13, `${ArenaType[arena.arenaType].toLowerCase()}_b`); - this.arenaEnemy2 = this.add.image(-240, 13, `${ArenaType[arena.arenaType].toLowerCase()}_b`); + this.arenaBg = this.add.image(0, 0, `${Biome[arena.biomeType].toLowerCase()}_bg`); + this.arenaPlayer = this.add.image(340, 20, `${Biome[arena.biomeType].toLowerCase()}_a`); + this.arenaEnemy = this.add.image(-240, 13, `${Biome[arena.biomeType].toLowerCase()}_b`); + this.arenaEnemy2 = this.add.image(-240, 13, `${Biome[arena.biomeType].toLowerCase()}_b`); [this.arenaBg, this.arenaPlayer, this.arenaEnemy, this.arenaEnemy2].forEach(a => { a.setOrigin(0, 0); @@ -209,8 +209,6 @@ export default class BattleScene extends Phaser.Scene { this.add.existing(this.modifierBar); uiContainer.add(this.modifierBar); - this.waveIndex = 1; - this.party = []; let loadPokemonAssets = []; @@ -226,11 +224,12 @@ export default class BattleScene extends Phaser.Scene { const enemySpecies = arena.randomSpecies(1); console.log(enemySpecies.name); - const enemyPokemon = new EnemyPokemon(this, enemySpecies, this.getLevelForWave()); + const enemyPokemon = new EnemyPokemon(this, enemySpecies, this.getLevelForNextWave()); loadPokemonAssets.push(enemyPokemon.loadAssets()); this.add.existing(enemyPokemon); - this.enemyPokemon = enemyPokemon; + + this.newBattle(enemyPokemon); field.add(enemyPokemon); @@ -297,11 +296,12 @@ export default class BattleScene extends Phaser.Scene { } getEnemyPokemon(): EnemyPokemon { - return this.enemyPokemon; + return this.currentBattle.enemyPokemon; } - setEnemyPokemon(enemyPokemon: EnemyPokemon) { - this.enemyPokemon = enemyPokemon; + newBattle(enemyPokemon: EnemyPokemon): Battle { + this.currentBattle = new Battle((this.currentBattle?.waveIndex || 0) + 1, enemyPokemon); + return this.currentBattle; } randomSpecies(fromArenaPool?: boolean): PokemonSpecies { @@ -310,13 +310,14 @@ export default class BattleScene extends Phaser.Scene { : allSpecies[(Utils.randInt(allSpecies.length)) - 1]; } - getLevelForWave() { - let averageLevel = 1 + this.waveIndex * 0.25; + getLevelForNextWave() { + const waveIndex = (this.currentBattle?.waveIndex || 0) + 1; + let averageLevel = 1 + waveIndex * 0.25; - if (this.waveIndex % 10 === 0) + if (waveIndex % 10 === 0) return Math.floor(averageLevel * 1.25); - const deviation = 10 / this.waveIndex; + const deviation = 10 / waveIndex; return Math.max(Math.round(averageLevel + Utils.randGauss(deviation)), 1); } @@ -421,6 +422,10 @@ export default class BattleScene extends Phaser.Scene { } } + getModifier(modifierType: { new(...args: any[]): Modifier }): Modifier { + return this.modifiers.find(m => m instanceof modifierType); + } + applyModifiers(modifierType: { new(...args: any[]): Modifier }, ...args: any[]): void { const modifiers = this.modifiers.filter(m => m instanceof modifierType && m.shouldApply(args)); for (let modifier of modifiers) { diff --git a/src/battle.ts b/src/battle.ts new file mode 100644 index 000000000..d20c5679f --- /dev/null +++ b/src/battle.ts @@ -0,0 +1,21 @@ +import { EnemyPokemon, PlayerPokemon } from "./pokemon"; + +export class Battle { + public waveIndex: integer; + public enemyPokemon: EnemyPokemon; + public playerParticipantIds: Set = new Set(); + + constructor(waveIndex: integer, enemyPokemon: EnemyPokemon) { + this.waveIndex = waveIndex; + this.enemyPokemon = enemyPokemon; + } + + addParticipant(playerPokemon: PlayerPokemon) { + console.log('add participant', playerPokemon.name) + this.playerParticipantIds.add(playerPokemon.id); + } + + removeFaintedParticipant(playerPokemon: PlayerPokemon) { + this.playerParticipantIds.delete(playerPokemon.id); + } +} \ No newline at end of file diff --git a/src/biome.ts b/src/biome.ts new file mode 100644 index 000000000..a5124fb22 --- /dev/null +++ b/src/biome.ts @@ -0,0 +1,3414 @@ +import BattleScene from "./battle-scene"; +import { default as PokemonSpecies, allSpecies, getPokemonSpecies } from "./pokemon-species"; +import { Stat } from "./pokemon-stat"; +import { Species } from "./species"; +import { Type } from './type'; +import * as Utils from './utils'; + +export enum Biome { + PLAINS, + GRASS, + FOREST, + WATER, + SWAMP, + SEA, + MOUNTAIN, + LAND, + CAVE, + DESERT, + ICE_CAVE, + MEADOW, + POWER_PLANT, + VOLCANO, + GRAVEYARD, + DOJO, + RUINS, + WASTELAND, + ABYSS, + SPACE +}; + +enum PoolTier { + COMMON, + UNCOMMON, + RARE, + SUPER_RARE, + ULTRA_RARE, + BOSS, + BOSS_RARE, + BOSS_ULTRA_RARE, + BOSS_LEGENDARY +}; + +export class BiomeArena { + private scene: BattleScene; + public biomeType: integer; + private bgm: string; + + private pokemonPool: PokemonSpecies[][]; + + constructor(scene: BattleScene, biome: integer, bgm: string) { + this.scene = scene; + this.biomeType = biome; + this.bgm = bgm; + + if (biomePools.hasOwnProperty(biome)) + this.pokemonPool = biomePools[biome]; + else { + const predicate = biomePoolPredicates[biome] || (() => {}); + this.pokemonPool = Utils.getEnumValues(PoolTier).map(t => allSpecies.filter(p => predicate(p, t))); + } + } + + randomSpecies(waveIndex: integer): PokemonSpecies { + const tierValue = Utils.randInt(512); + const tier = tierValue >= 156 ? PoolTier.COMMON : tierValue >= 32 ? PoolTier.UNCOMMON : tierValue >= 6 ? PoolTier.RARE : tierValue >= 1 ? PoolTier.SUPER_RARE : PoolTier.ULTRA_RARE; + const tierPool = this.pokemonPool[tier]; + let ret: PokemonSpecies; + if (!tierPool.length) + ret = this.scene.randomSpecies(); + else { + const species = tierPool[Utils.randInt(tierPool.length)]; + ret = species instanceof PokemonSpecies ? species : getPokemonSpecies(species); + } + const newSpeciesId = ret.getSpeciesForLevel(5); + if (newSpeciesId !== ret.speciesId) { + console.log('Replaced', Species[ret.speciesId], 'with', Species[newSpeciesId]); + ret = getPokemonSpecies(newSpeciesId); + } + return ret; + } + + playBgm() { + this.scene.loadBgm(this.bgm); + this.scene.load.once(Phaser.Loader.Events.COMPLETE, () => this.scene.playBgm(this.bgm)); + } +} + +const biomePools = { + [Biome.PLAINS]: { + [PoolTier.COMMON]: [ + Species.CATERPIE, Species.METAPOD, Species.WEEDLE, Species.KAKUNA, Species.PIDGEY, Species.RATTATA, Species.SPEAROW, Species.SENTRET, Species.HOOTHOOT, Species.LEDYBA, + Species.HOPPIP, Species.SUNKERN, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.SILCOON, Species.CASCOON, Species.TAILLOW, Species.STARLY, Species.BIDOOF, + Species.KRICKETOT, Species.PATRAT, Species.LILLIPUP, Species.PIDOVE, Species.COTTONEE, Species.PETILIL, Species.MINCCINO, Species.FOONGUS + ], + [PoolTier.UNCOMMON]: [ + Species.EKANS, Species.NIDORAN_F, Species.NIDORAN_M, Species.ODDISH, Species.PARAS, Species.VENONAT, Species.MEOWTH, Species.BELLSPROUT, Species.PICHU, Species.IGGLYBUFF, + Species.LOTAD, Species.SEEDOT, Species.SHROOMISH, Species.NINCADA, Species.AZURILL, Species.WHISMUR, Species.SKITTY, Species.BUDEW, Species.COMBEE, Species.CHERUBI, + Species.VENIPEDE + ], + [PoolTier.RARE]: [ Species.ABRA, Species.CLEFFA, Species.WOOPER, Species.RALTS, Species.SURSKIT, Species.SLAKOTH, Species.DUCKLETT ], + [PoolTier.SUPER_RARE]: [ Species.EEVEE, Species.TOGEPI, Species.SMEARGLE, Species.TYROGUE, Species.WYNAUT ], + [PoolTier.ULTRA_RARE]: [ Species.DITTO ] + } +}; + +const biomePoolPredicates = { + [Biome.PLAINS]: (p, t) => { + if (p.isOfType(Type.GHOST) || p.isOfType(Type.STEEL) || p.isOfType(Type.ICE) || p.isOfType(Type.DRAGON)) + return false; + for (let s in p.baseStats) { + let threshold: integer; + const stat = parseInt(s); + switch (stat) { + case Stat.HP: + threshold = 70; + break; + default: + threshold = 60; + break; + } + if (p.baseStats[s] > threshold) { + if (p.baseTotal <= 300 && p.baseExp <= 75 && (p.isOfType(Type.NORMAL) || p.isOfType(Type.BUG) || p.isOfType(Type.GRASS))) + return true; + return false; + } + } + return p.baseTotal <= 320 && p.baseExp <= 75; + }, + [Biome.GRASS]: (p, t) => { + switch (t) { + case PoolTier.SUPER_RARE: + return [ Species.ENTEI, Species.SUICUNE, Species.RAIKOU, Species.LATIOS, Species.LATIAS ].map(s => getPokemonSpecies(s)); + case PoolTier.ULTRA_RARE: + return [ Species.MEW ].map(s => getPokemonSpecies(s)); + } + return p.isOfType(Type.NORMAL) || p.isOfType(Type.FAIRY) || p.isOfType(Type.GRASS) || p.isOfType(Type.BUG) || p.isOfType(Type.ELECTRIC); + }, + [Biome.FOREST]: (p, t) => { + switch (t) { + case PoolTier.ULTRA_RARE: + return getPokemonSpecies(Species.CELEBI); + } + return p.isOfType(Type.GRASS) || p.isOfType(Type.BUG) || p.isOfType(Type.POISON); + }, + [Biome.WATER]: (p, t) => { + switch (t) { + case PoolTier.SUPER_RARE: + return [ Species.UXIE, Species.MESPRIT, Species.AZELF ].map(s => getPokemonSpecies(s)); + } + return p.isOfType(Type.WATER) + }, + [Biome.SWAMP]: (p, t) => { + return p.isOfType(Type.GRASS) || p.isOfType(Type.WATER) || p.isOfType(Type.POISON); + }, + [Biome.SEA]: (p, t) => { + switch (t) { + case PoolTier.SUPER_RARE: + return [ Species.KYOGRE ].map(s => getPokemonSpecies(s)); + case PoolTier.ULTRA_RARE: + return [ Species.LUGIA ].map(s => getPokemonSpecies(s)); + } + return p.isOfType(Type.WATER); + }, + [Biome.MOUNTAIN]: (p, t) => { + switch (t) { + case PoolTier.SUPER_RARE: + return [ Species.ARTICUNO, Species.ZAPDOS, Species.MOLTRES ].map(s => getPokemonSpecies(s)); + break; + case PoolTier.ULTRA_RARE: + return [ Species.HO_OH, Species.RAYQUAZA ].map(s => getPokemonSpecies(s)); + } + return p.isOfType(Type.FLYING) || p.isOfType(Type.GROUND) || p.isOfType(Type.ROCK) || p.isOfType(Type.ELECTRIC) || p.isOfType(Type.STEEL); + }, + [Biome.LAND]: (p, t) => { + switch (t) { + case PoolTier.SUPER_RARE: + return [ Species.GROUDON ].map(s => getPokemonSpecies(s)); + } + return p.isOfType(Type.GROUND); + }, + [Biome.CAVE]: (p, t) => { + switch (t) { + case PoolTier.SUPER_RARE: + return [ Species.REGIROCK, Species.REGICE, Species.REGISTEEL ].map(s => getPokemonSpecies(s)); + case PoolTier.ULTRA_RARE: + return [ Species.MEWTWO, Species.REGIGIGAS ].map(s => getPokemonSpecies(s)); + } + return p.isOfType(Type.ROCK); + }, + [Biome.DESERT]: (p, t) => { + return p.isOfType(Type.GROUND) || p.isOfType(Type.ROCK); + }, + [Biome.ICE_CAVE]: (p, t) => { + return p.isOfType(Type.ICE); + }, + [Biome.MEADOW]: (p, t) => { + return p.isOfType(Type.FAIRY); + }, + [Biome.POWER_PLANT]: (p, t) => { + return p.isOfType(Type.ELECTRIC); + }, + [Biome.VOLCANO]: (p, t) => { + return p.isOfType(Type.FIRE); + }, + [Biome.GRAVEYARD]: (p, t) => { + return p.isOfType(Type.GHOST); + }, + [Biome.DOJO]: (p, t) => { + return p.isOfType(Type.FIGHTING); + }, + [Biome.RUINS]: (p, t) => { + return p.isOfType(Type.PSYCHIC); + }, + [Biome.WASTELAND]: (p, t) => { + return p.isOfType(Type.DRAGON); + }, + [Biome.ABYSS]: (p, t) => { + return p.isOfType(Type.DARK); + }, + [Biome.SPACE]: (p, t) => { + return p.isOfType(Type.PSYCHIC); + } +}; + +const pokemonBiomes = [ + [ Species.BULBASAUR, Type.GRASS, Type.POISON, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.IVYSAUR, Type.GRASS, Type.POISON, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.VENUSAUR, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.CHARMANDER, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.CHARMELEON, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.CHARIZARD, Type.FIRE, Type.FLYING, [ + [ Biome.VOLCANO, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SQUIRTLE, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ] + ] + ], + [ Species.WARTORTLE, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ] + ] + ], + [ Species.BLASTOISE, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ], + [ Biome.WATER, PoolTier.BOSS_RARE ] + ] + ], + [ Species.CATERPIE, Type.BUG, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ] + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.METAPOD, Type.BUG, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ] + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.BUTTERFREE, Type.BUG, Type.FLYING, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.WEEDLE, Type.BUG, Type.POISON, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.KAKUNA, Type.BUG, Type.POISON, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.BEEDRILL, Type.BUG, Type.POISON, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.PIDGEY, Type.NORMAL, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.PIDGEOTTO, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.PIDGEOT, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.BOSS ] + ] + ], + [ Species.RATTATA, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.RATICATE, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.SPEAROW, Type.NORMAL, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.FEAROW, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.BOSS ] + ] + ], + [ Species.EKANS, Type.POISON, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.ARBOK, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.BOSS ] + ] + ], + [ Species.PIKACHU, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.RAICHU, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.BOSS ], + ] + ], + [ Species.SANDSHREW, Type.GROUND, -1, [ + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.SANDSLASH, Type.GROUND, -1, [ + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.BOSS ] + ] + ], + [ Species.NIDORAN_F, Type.POISON, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.NIDORINA, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.NIDOQUEEN, Type.POISON, Type.GROUND, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.NIDORAN_M, Type.POISON, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.NIDORINO, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.NIDOKING, Type.POISON, Type.GROUND, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.CLEFAIRY, Type.FAIRY, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.UNCOMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.CLEFABLE, Type.FAIRY, -1, [ + [ Biome.MEADOW, PoolTier.BOSS_RARE ], + [ Biome.SPACE, PoolTier.BOSS ], + ] + ], + [ Species.VULPIX, Type.FIRE, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.NINETALES, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.JIGGLYPUFF, Type.NORMAL, Type.FAIRY, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.MEADOW, PoolTier.COMMON ] + ] + ], + [ Species.WIGGLYTUFF, Type.NORMAL, Type.FAIRY, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.MEADOW, PoolTier.COMMON ], + [ Biome.MEADOW, PoolTier.BOSS ] + ] + ], + [ Species.ZUBAT, Type.POISON, Type.FLYING, [ + [ Biome.CAVE, PoolTier.COMMON ] + ] + ], + [ Species.GOLBAT, Type.POISON, Type.FLYING, [ + [ Biome.CAVE, PoolTier.COMMON ] + ] + ], + [ Species.ODDISH, Type.GRASS, Type.POISON, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.GLOOM, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.VILEPLUME, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.PARAS, Type.BUG, Type.GRASS, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.PARASECT, Type.BUG, Type.GRASS, [ + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.VENONAT, Type.BUG, Type.POISON, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.VENOMOTH, Type.BUG, Type.POISON, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.DIGLETT, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.COMMON ] + ] + ], + [ Species.DUGTRIO, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.BOSS ] + ] + ], + [ Species.MEOWTH, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.PERSIAN, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.PSYDUCK, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.GOLDUCK, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.WATER, PoolTier.BOSS ] + ] + ], + [ Species.MANKEY, Type.FIGHTING, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.PRIMEAPE, Type.FIGHTING, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.DOJO, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.BOSS ] + ] + ], + [ Species.GROWLITHE, Type.FIRE, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.UNCOMMON ] + ] + ], + [ Species.ARCANINE, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.POLIWAG, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.POLIWHIRL, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.POLIWRATH, Type.WATER, Type.FIGHTING, [ + [ Biome.WATER, PoolTier.BOSS ] + ] + ], + [ Species.ABRA, Type.PSYCHIC, -1, [ + [ Biome.PLAINS, PoolTier.RARE ], + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.KADABRA, Type.PSYCHIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.ALAKAZAM, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.BOSS ] + ] + ], + [ Species.MACHOP, Type.FIGHTING, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.MACHOKE, Type.FIGHTING, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.MACHAMP, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.BOSS ] + ] + ], + [ Species.BELLSPROUT, Type.GRASS, Type.POISON, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.WEEPINBELL, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.VICTREEBEL, Type.GRASS, Type.POISON, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.TENTACOOL, Type.WATER, Type.POISON, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.TENTACRUEL, Type.WATER, Type.POISON, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.GEODUDE, Type.ROCK, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.UNCOMMON ] + ] + ], + [ Species.GRAVELER, Type.ROCK, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.UNCOMMON ] + ] + ], + [ Species.GOLEM, Type.ROCK, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.BOSS ], + [ Biome.LAND, PoolTier.BOSS ] + ] + ], + [ Species.PONYTA, Type.FIRE, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.RAPIDASH, Type.FIRE, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.SLOWPOKE, Type.WATER, Type.PSYCHIC, [ + [ Biome.WATER, PoolTier.UNCOMMON ] + ] + ], + [ Species.SLOWBRO, Type.WATER, Type.PSYCHIC, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.WATER, PoolTier.BOSS ] + ] + ], + [ Species.MAGNEMITE, Type.ELECTRIC, Type.STEEL, [ + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.MAGNETON, Type.ELECTRIC, Type.STEEL, [ + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.FARFETCHD, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.DODUO, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.DODRIO, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.SEEL, Type.WATER, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.DEWGONG, Type.WATER, Type.ICE, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ], + [ Biome.ICE_CAVE, PoolTier.BOSS ] + ] + ], + [ Species.GRIMER, Type.POISON, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.MUK, Type.POISON, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SHELLDER, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.CLOYSTER, Type.WATER, Type.ICE, [ + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.GASTLY, Type.GHOST, Type.POISON, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.HAUNTER, Type.GHOST, Type.POISON, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.GENGAR, Type.GHOST, Type.POISON, [ + [ Biome.GRAVEYARD, PoolTier.BOSS ] + ] + ], + [ Species.ONIX, Type.ROCK, Type.GROUND, [ + [ Biome.LAND, PoolTier.UNCOMMON ], + [ Biome.CAVE, PoolTier.RARE ] + ] + ], + [ Species.DROWZEE, Type.PSYCHIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.COMMON ] + ] + ], + [ Species.HYPNO, Type.PSYCHIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.BOSS ] + ] + ], + [ Species.KRABBY, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.KINGLER, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.VOLTORB, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.ELECTRODE, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.EXEGGCUTE, Type.GRASS, Type.PSYCHIC, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.EXEGGUTOR, Type.GRASS, Type.PSYCHIC, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.CUBONE, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.UNCOMMON ], + [ Biome.GRAVEYARD, PoolTier.UNCOMMON ] + ] + ], + [ Species.MAROWAK, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.UNCOMMON ], + [ Biome.GRAVEYARD, PoolTier.UNCOMMON ], + [ Biome.LAND, PoolTier.BOSS ] + ] + ], + [ Species.HITMONLEE, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.RARE ], + [ Biome.DOJO, PoolTier.BOSS ] + ] + ], + [ Species.HITMONCHAN, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.RARE ], + [ Biome.DOJO, PoolTier.BOSS ] + ] + ], + [ Species.LICKITUNG, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.KOFFING, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.WEEZING, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.BOSS ] + ] + ], + [ Species.RHYHORN, Type.GROUND, Type.ROCK, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ], + [ Biome.LAND, PoolTier.COMMON ] + ] + ], + [ Species.RHYDON, Type.GROUND, Type.ROCK, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ], + [ Biome.LAND, PoolTier.COMMON ] + ] + ], + [ Species.CHANSEY, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.MEADOW, PoolTier.SUPER_RARE ] + ] + ], + [ Species.TANGELA, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.KANGASKHAN, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.HORSEA, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.SEADRA, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.GOLDEEN, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.SEAKING, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.STARYU, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.STARMIE, Type.WATER, Type.PSYCHIC, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.MR_MIME, Type.PSYCHIC, Type.FAIRY, [ + [ Biome.RUINS, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SCYTHER, Type.BUG, Type.FLYING, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.JYNX, Type.ICE, Type.PSYCHIC, [ + [ Biome.ICE_CAVE, PoolTier.RARE ], + [ Biome.ICE_CAVE, PoolTier.BOSS_RARE ] + ] + ], + [ Species.ELECTABUZZ, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.RARE ] + ] + ], + [ Species.MAGMAR, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.PINSIR, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.TAUROS, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.MEADOW, PoolTier.UNCOMMON ], + [ Biome.MEADOW, PoolTier.BOSS ] + ] + ], + [ Species.MAGIKARP, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.GYARADOS, Type.WATER, Type.FLYING, [ + [ Biome.WATER, PoolTier.BOSS ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.LAPRAS, Type.WATER, Type.ICE, [ + [ Biome.SEA, PoolTier.RARE ] + ] + ], + [ Species.DITTO, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.ULTRA_RARE ], + [ Biome.GRASS, PoolTier.ULTRA_RARE ] + ] + ], + [ Species.EEVEE, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.MEADOW, PoolTier.RARE ] + ] + ], + [ Species.VAPOREON, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.SUPER_RARE ], + [ Biome.WATER, PoolTier.BOSS_RARE ] + ] + ], + [ Species.JOLTEON, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.SUPER_RARE ], + [ Biome.POWER_PLANT, PoolTier.BOSS_RARE ] + ] + ], + [ Species.FLAREON, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.SUPER_RARE ], + [ Biome.VOLCANO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.PORYGON, Type.NORMAL, -1, [ + [ Biome.SPACE, PoolTier.SUPER_RARE ] + ] + ], + [ Species.OMANYTE, Type.ROCK, Type.WATER, [ + [ Biome.SEA, PoolTier.SUPER_RARE ] + ] + ], + [ Species.OMASTAR, Type.ROCK, Type.WATER, [ + [ Biome.SEA, PoolTier.SUPER_RARE ], + [ Biome.SEA, PoolTier.BOSS_RARE ] + ] + ], + [ Species.KABUTO, Type.ROCK, Type.WATER, [ + [ Biome.SEA, PoolTier.SUPER_RARE ] + ] + ], + [ Species.KABUTOPS, Type.ROCK, Type.WATER, [ + [ Biome.SEA, PoolTier.SUPER_RARE ], + [ Biome.SEA, PoolTier.BOSS_RARE ] + ] + ], + [ Species.AERODACTYL, Type.ROCK, Type.FLYING, [ + [ Biome.WASTELAND, PoolTier.SUPER_RARE ], + [ Biome.WASTELAND, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SNORLAX, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.ARTICUNO, Type.ICE, Type.FLYING, [ + [ Biome.ICE_CAVE, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.ZAPDOS, Type.ELECTRIC, Type.FLYING, [ + [ Biome.POWER_PLANT, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.MOLTRES, Type.FIRE, Type.FLYING, [ + [ Biome.VOLCANO, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.DRATINI, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.RARE ] + ] + ], + [ Species.DRAGONAIR, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.RARE ] + ] + ], + [ Species.DRAGONITE, Type.DRAGON, Type.FLYING, [ + [ Biome.WASTELAND, PoolTier.RARE ], + [ Biome.WASTELAND, PoolTier.BOSS ] + ] + ], + [ Species.MEWTWO, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.MEW, Type.PSYCHIC, -1, [ + [ Biome.SPACE, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.CHIKORITA, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.BAYLEEF, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.MEGANIUM, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.CYNDAQUIL, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.QUILAVA, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.TYPHLOSION, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.TOTODILE, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ] + ] + ], + [ Species.CROCONAW, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ] + ] + ], + [ Species.FERALIGATR, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ], + [ Biome.WATER, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SENTRET, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.FURRET, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.HOOTHOOT, Type.NORMAL, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.NOCTOWL, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.LEDYBA, Type.BUG, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.LEDIAN, Type.BUG, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.SPINARAK, Type.BUG, Type.POISON, [ + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.ARIADOS, Type.BUG, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.CROBAT, Type.POISON, Type.FLYING, [ + [ Biome.CAVE, PoolTier.BOSS ] + ] + ], + [ Species.CHINCHOU, Type.WATER, Type.ELECTRIC, [ + [ Biome.SEA, PoolTier.UNCOMMON ] + ] + ], + [ Species.LANTURN, Type.WATER, Type.ELECTRIC, [ + [ Biome.SEA, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.PICHU, Type.ELECTRIC, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.CLEFFA, Type.FAIRY, -1, [ + [ Biome.PLAINS, PoolTier.RARE ] + ] + ], + [ Species.IGGLYBUFF, Type.NORMAL, Type.FAIRY, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.TOGEPI, Type.FAIRY, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.TOGETIC, Type.FAIRY, Type.FLYING, [ + [ Biome.MEADOW, PoolTier.UNCOMMON ] + ] + ], + [ Species.NATU, Type.PSYCHIC, Type.FLYING, [ + [ Biome.RUINS, PoolTier.COMMON ] + ] + ], + [ Species.XATU, Type.PSYCHIC, Type.FLYING, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.BOSS ] + ] + ], + [ Species.MAREEP, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.FLAAFFY, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.AMPHAROS, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.BELLOSSOM, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.MARILL, Type.WATER, Type.FAIRY, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.AZUMARILL, Type.WATER, Type.FAIRY, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.WATER, PoolTier.BOSS ] + ] + ], + [ Species.SUDOWOODO, Type.ROCK, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.POLITOED, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.SUPER_RARE ], + [ Biome.WATER, PoolTier.BOSS_RARE ] + ] + ], + [ Species.HOPPIP, Type.GRASS, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.SKIPLOOM, Type.GRASS, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.JUMPLUFF, Type.GRASS, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.AIPOM, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.SUNKERN, Type.GRASS, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.SUNFLORA, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.YANMA, Type.BUG, Type.FLYING, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.WOOPER, Type.WATER, Type.GROUND, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.QUAGSIRE, Type.WATER, Type.GROUND, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.BOSS ] + ] + ], + [ Species.ESPEON, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.SUPER_RARE ], + [ Biome.RUINS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.UMBREON, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.SUPER_RARE ], + [ Biome.ABYSS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.MURKROW, Type.DARK, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.ABYSS, PoolTier.UNCOMMON ] + ] + ], + [ Species.SLOWKING, Type.WATER, Type.PSYCHIC, [ + [ Biome.WATER, PoolTier.SUPER_RARE ], + [ Biome.WATER, PoolTier.BOSS_RARE ] + ] + ], + [ Species.MISDREAVUS, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.UNCOMMON ] + ] + ], + [ Species.UNOWN, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ] + ] + ], + [ Species.WOBBUFFET, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.GIRAFARIG, Type.NORMAL, Type.PSYCHIC, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.PINECO, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.FORRETRESS, Type.BUG, Type.STEEL, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.DUNSPARCE, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.GLIGAR, Type.GROUND, Type.FLYING, [ + [ Biome.LAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.STEELIX, Type.STEEL, Type.GROUND, [ + [ Biome.LAND, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SNUBBULL, Type.FAIRY, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.COMMON ] + ] + ], + [ Species.GRANBULL, Type.FAIRY, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.COMMON ], + [ Biome.MEADOW, PoolTier.BOSS ] + ] + ], + [ Species.QWILFISH, Type.WATER, Type.POISON, [ + [ Biome.SEA, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.SCIZOR, Type.BUG, Type.STEEL, [ + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SHUCKLE, Type.BUG, Type.ROCK, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.HERACROSS, Type.BUG, Type.FIGHTING, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SNEASEL, Type.DARK, Type.ICE, [ + [ Biome.ICE_CAVE, PoolTier.UNCOMMON ] + ] + ], + [ Species.TEDDIURSA, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.URSARING, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.SLUGMA, Type.FIRE, -1, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.MAGCARGO, Type.FIRE, Type.ROCK, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.SWINUB, Type.ICE, Type.GROUND, [ + [ Biome.ICE_CAVE, PoolTier.UNCOMMON ] + ] + ], + [ Species.PILOSWINE, Type.ICE, Type.GROUND, [ + [ Biome.ICE_CAVE, PoolTier.UNCOMMON] + ] + ], + [ Species.CORSOLA, Type.WATER, Type.ROCK, [ + [ Biome.SEA, PoolTier.RARE ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.REMORAID, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.OCTILLERY, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.RARE ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.DELIBIRD, Type.ICE, Type.FLYING, [ + [ Biome.ICE_CAVE, PoolTier.SUPER_RARE ] + ] + ], + [ Species.MANTINE, Type.WATER, Type.FLYING, [ + [ Biome.SEA, PoolTier.RARE ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.SKARMORY, Type.STEEL, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.MOUNTAIN, PoolTier.BOSS ] + ] + ], + [ Species.HOUNDOUR, Type.DARK, Type.FIRE, [ + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.HOUNDOOM, Type.DARK, Type.FIRE, [ + [ Biome.ABYSS, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.BOSS ] + ] + ], + [ Species.KINGDRA, Type.WATER, Type.DRAGON, [ + [ Biome.SEA, PoolTier.SUPER_RARE ], + [ Biome.SEA, PoolTier.BOSS_RARE ] + ] + ], + [ Species.PHANPY, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.COMMON ] + ] + ], + [ Species.DONPHAN, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.BOSS ] + ] + ], + [ Species.PORYGON2, Type.NORMAL, -1, [ + [ Biome.SPACE, PoolTier.SUPER_RARE ] + ] + ], + [ Species.STANTLER, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SMEARGLE, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.TYROGUE, Type.FIGHTING, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ], + [ Biome.DOJO, PoolTier.RARE ] + ] + ], + [ Species.HITMONTOP, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.SUPER_RARE ], + [ Biome.DOJO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.SMOOCHUM, Type.ICE, Type.PSYCHIC, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.ELEKID, Type.ELECTRIC, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.MAGBY, Type.FIRE, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.MILTANK, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.UNCOMMON ], + [ Biome.MEADOW, PoolTier.BOSS ] + ] + ], + [ Species.BLISSEY, Type.NORMAL, -1, [ + [ Biome.MEADOW, PoolTier.BOSS_RARE ] + ] + ], + [ Species.RAIKOU, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.ENTEI, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.SUICUNE, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.LARVITAR, Type.ROCK, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.PUPITAR, Type.ROCK, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.TYRANITAR, Type.ROCK, Type.DARK, [ + [ Biome.MOUNTAIN, PoolTier.BOSS_RARE ], + [ Biome.WASTELAND, PoolTier.BOSS ] + ] + ], + [ Species.LUGIA, Type.PSYCHIC, Type.FLYING, [ + [ Biome.SEA, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.HO_OH, Type.FIRE, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.CELEBI, Type.PSYCHIC, Type.GRASS, [ + [ Biome.FOREST, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.TREECKO, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.GROVYLE, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.SCEPTILE, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.TORCHIC, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.COMBUSKEN, Type.FIRE, Type.FIGHTING, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.BLAZIKEN, Type.FIRE, Type.FIGHTING, [ + [ Biome.VOLCANO, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.MUDKIP, Type.WATER, -1, [ + [ Biome.SWAMP, PoolTier.UNCOMMON ] + ] + ], + [ Species.MARSHTOMP, Type.WATER, Type.GROUND, [ + [ Biome.SWAMP, PoolTier.UNCOMMON ] + ] + ], + [ Species.SWAMPERT, Type.WATER, Type.GROUND, [ + [ Biome.SWAMP, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.BOSS_RARE ] + ] + ], + [ Species.POOCHYENA, Type.DARK, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.MIGHTYENA, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.BOSS ] + ] + ], + [ Species.ZIGZAGOON, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.LINOONE, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.WURMPLE, Type.BUG, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.SILCOON, Type.BUG, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.BEAUTIFLY, Type.BUG, Type.FLYING, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.CASCOON, Type.BUG, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.DUSTOX, Type.BUG, Type.POISON, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.LOTAD, Type.WATER, Type.GRASS, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.LOMBRE, Type.WATER, Type.GRASS, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.LUDICOLO, Type.WATER, Type.GRASS, [ + [ Biome.SWAMP, PoolTier.BOSS ] + ] + ], + [ Species.SEEDOT, Type.GRASS, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.NUZLEAF, Type.GRASS, Type.DARK, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.SHIFTRY, Type.GRASS, Type.DARK, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.TAILLOW, Type.NORMAL, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.SWELLOW, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.BOSS ] + ] + ], + [ Species.WINGULL, Type.WATER, Type.FLYING, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.PELIPPER, Type.WATER, Type.FLYING, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.WATER, PoolTier.BOSS ] + ] + ], + [ Species.RALTS, Type.PSYCHIC, Type.FAIRY, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.UNCOMMON ] + ] + ], + [ Species.KIRLIA, Type.PSYCHIC, Type.FAIRY, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.UNCOMMON ] + ] + ], + [ Species.GARDEVOIR, Type.PSYCHIC, Type.FAIRY, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.MEADOW, PoolTier.UNCOMMON ], + [ Biome.MEADOW, PoolTier.BOSS ] + ] + ], + [ Species.SURSKIT, Type.BUG, Type.WATER, [ + [ Biome.PLAINS, PoolTier.RARE ], + [ Biome.WATER, PoolTier.UNCOMMON ] + ] + ], + [ Species.MASQUERAIN, Type.BUG, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.RARE ], + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.WATER, PoolTier.BOSS ] + ] + ], + [ Species.SHROOMISH, Type.GRASS, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.BRELOOM, Type.GRASS, Type.FIGHTING, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.SLAKOTH, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.VIGOROTH, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.SLAKING, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.NINCADA, Type.BUG, Type.GROUND, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.NINJASK, Type.BUG, Type.FLYING, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.SHEDINJA, Type.BUG, Type.GHOST, [ + [ Biome.FOREST, PoolTier.SUPER_RARE ] + ] + ], + [ Species.WHISMUR, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.LOUDRED, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.EXPLOUD, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.MAKUHITA, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.HARIYAMA, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.BOSS ] + ] + ], + [ Species.AZURILL, Type.NORMAL, Type.FAIRY, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.NOSEPASS, Type.ROCK, -1, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ] + ] + ], + [ Species.SKITTY, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.DELCATTY, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.SABLEYE, Type.DARK, Type.GHOST, [ + [ Biome.ABYSS, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.BOSS ] + ] + ], + [ Species.MAWILE, Type.STEEL, Type.FAIRY, [ + [ Biome.CAVE, PoolTier.UNCOMMON ], + [ Biome.CAVE, PoolTier.BOSS ] + ] + ], + [ Species.ARON, Type.STEEL, Type.ROCK, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ] + ] + ], + [ Species.LAIRON, Type.STEEL, Type.ROCK, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ] + ] + ], + [ Species.AGGRON, Type.STEEL, Type.ROCK, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, PoolTier.BOSS ] + ] + ], + [ Species.MEDITITE, Type.FIGHTING, Type.PSYCHIC, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.MEDICHAM, Type.FIGHTING, Type.PSYCHIC, [ + [ Biome.DOJO, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.BOSS ] + ] + ], + [ Species.ELECTRIKE, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.MANECTRIC, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.BOSS ] + ] + ], + [ Species.PLUSLE, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.UNCOMMON ] + ] + ], + [ Species.MINUN, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.UNCOMMON ] + ] + ], + [ Species.VOLBEAT, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.ILLUMISE, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.ROSELIA, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.GULPIN, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SWALOT, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.BOSS ] + ] + ], + [ Species.CARVANHA, Type.WATER, Type.DARK, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.SHARPEDO, Type.WATER, Type.DARK, [ + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.WAILMER, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.UNCOMMON ] + ] + ], + [ Species.WAILORD, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.SUPER_RARE ], + [ Biome.SEA, PoolTier.BOSS_RARE ] + ] + ], + [ Species.NUMEL, Type.FIRE, Type.GROUND, [ + [ Biome.LAND, PoolTier.UNCOMMON ], + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.CAMERUPT, Type.FIRE, Type.GROUND, [ + [ Biome.LAND, PoolTier.UNCOMMON ], + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.TORKOAL, Type.FIRE, -1, [ + [ Biome.LAND, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.UNCOMMON ], + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.SPOINK, Type.PSYCHIC, -1, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.GRUMPIG, Type.PSYCHIC, -1, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.RUINS, PoolTier.UNCOMMON ], + [ Biome.RUINS, PoolTier.BOSS ] + ] + ], + [ Species.SPINDA, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE] + ] + ], + [ Species.TRAPINCH, Type.GROUND, -1, [ + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.VIBRAVA, Type.GROUND, Type.DRAGON, [ + [ Biome.DESERT, PoolTier.RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.FLYGON, Type.GROUND, Type.DRAGON, [ + [ Biome.DESERT, PoolTier.RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ], + [ Biome.WASTELAND, PoolTier.BOSS ] + ] + ], + [ Species.CACNEA, Type.GRASS, -1, [ + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.CACTURNE, Type.GRASS, Type.DARK, [ + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.BOSS ] + ] + ], + [ Species.SWABLU, Type.NORMAL, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ] + ] + ], + [ Species.ALTARIA, Type.DRAGON, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.UNCOMMON ] + [ Biome.WASTELAND, PoolTier.COMMON ], + [ Biome.WASTELAND, PoolTier.BOSS ] + ] + ], + [ Species.ZANGOOSE, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.SEVIPER, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.LUNATONE, Type.ROCK, Type.PSYCHIC, [ + [ Biome.SPACE, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.BOSS ] + ] + ], + [ Species.SOLROCK, Type.ROCK, Type.PSYCHIC, [ + [ Biome.SPACE, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.BOSS ] + ] + ], + [ Species.BARBOACH, Type.WATER, Type.GROUND, [ + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.UNCOMMON ] + ] + ], + [ Species.WHISCASH, Type.WATER, Type.GROUND, [ + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.UNCOMMON ], + [ Biome.SWAMP, PoolTier.BOSS ] + ] + ], + [ Species.CORPHISH, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.CRAWDAUNT, Type.WATER, Type.DARK, [ + [ Biome.WATER, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.BALTOY, Type.GROUND, Type.PSYCHIC, [ + [ Biome.DESERT, PoolTier.UNCOMMON ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.CLAYDOL, Type.GROUND, Type.PSYCHIC, [ + [ Biome.DESERT, PoolTier.UNCOMMON ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.BOSS ] + [ Biome.SPACE, PoolTier.UNCOMMON ] + ] + ], + [ Species.LILEEP, Type.ROCK, Type.GRASS, [ + [ Biome.DESERT, PoolTier.SUPER_RARE ] + ] + ], + [ Species.CRADILY, Type.ROCK, Type.GRASS, [ + [ Biome.DESERT, PoolTier.SUPER_RARE ], + [ Biome.DESERT, PoolTier.BOSS_RARE ] + ] + ], + [ Species.ANORITH, Type.ROCK, Type.BUG, [ + [ Biome.DESERT, PoolTier.SUPER_RARE ] + ] + ], + [ Species.ARMALDO, Type.ROCK, Type.BUG, [ + [ Biome.DESERT, PoolTier.SUPER_RARE ], + [ Biome.DESERT, PoolTier.BOSS_RARE ] + ] + ], + [ Species.FEEBAS, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.ULTRA_RARE ] + ] + ], + [ Species.MILOTIC, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.CASTFORM, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.SUPER_RARE ], + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.KECLEON, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.GRASS, PoolTier.BOSS ] + ] + ], + [ Species.SHUPPET, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.BANETTE, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.BOSS ] + ] + ], + [ Species.DUSKULL, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.DUSCLOPS, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.TROPIUS, Type.GRASS, Type.FLYING, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.CHIMECHO, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.UNCOMMON ], + [ Biome.SPACE, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.BOSS ] + ] + ], + [ Species.ABSOL, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.RARE ], + [ Biome.ABYSS, PoolTier.BOSS ] + ] + ], + [ Species.WYNAUT, Type.PSYCHIC, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.SNORUNT, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.UNCOMMON ] + ] + ], + [ Species.GLALIE, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.UNCOMMON ], + [ Biome.ICE_CAVE, PoolTier.BOSS ] + ] + ], + [ Species.SPHEAL, Type.ICE, Type.WATER, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.SEALEO, Type.ICE, Type.WATER, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.WALREIN, Type.ICE, Type.WATER, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ], + [ Biome.ICE_CAVE, PoolTier.BOSS ] + ] + ], + [ Species.CLAMPERL, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.HUNTAIL, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.GOREBYSS, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.RELICANTH, Type.WATER, Type.ROCK, [ + [ Biome.SEA, PoolTier.SUPER_RARE ], + [ Biome.SEA, PoolTier.BOSS_RARE ] + ] + ], + [ Species.LUVDISC, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.UNCOMMON ], + [ Biome.SEA, PoolTier.BOSS ] + ] + ], + [ Species.BAGON, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.SHELGON, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.SALAMENCE, Type.DRAGON, Type.FLYING, [ + [ Biome.WASTELAND, PoolTier.UNCOMMON ], + [ Biome.WASTELAND, PoolTier.BOSS ] + ] + ], + [ Species.BELDUM, Type.STEEL, Type.PSYCHIC, [ + [ Biome.SPACE, PoolTier.RARE ] + ] + ], + [ Species.METANG, Type.STEEL, Type.PSYCHIC, [ + [ Biome.SPACE, PoolTier.RARE ] + ] + ], + [ Species.METAGROSS, Type.STEEL, Type.PSYCHIC, [ + [ Biome.SPACE, PoolTier.RARE ], + [ Biome.SPACE, PoolTier.BOSS_RARE ] + ] + ], + [ Species.REGIROCK, Type.ROCK, -1, [ + [ Biome.DESERT, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.REGICE, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.REGISTEEL, Type.STEEL, -1, [ + [ Biome.MOUNTAIN, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.LATIAS, Type.DRAGON, Type.PSYCHIC, [ + [ Biome.GRASS, PoolTier.ULTRA_RARE ] + ] + ], + [ Species.LATIOS, Type.DRAGON, Type.PSYCHIC, [ + [ Biome.GRASS, PoolTier.ULTRA_RARE ] + ] + ], + [ Species.KYOGRE, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.GROUDON, Type.GROUND, -1, [ + [ Biome.LAND, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.RAYQUAZA, Type.DRAGON, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.JIRACHI, Type.STEEL, Type.PSYCHIC, [ + [ Biome.SPACE, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.DEOXYS, Type.PSYCHIC, -1, [ + [ Biome.SPACE, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.TURTWIG, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.GROTLE, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.TORTERRA, Type.GRASS, Type.GROUND, [ + [ Biome.FOREST, PoolTier.RARE ], + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.CHIMCHAR, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.MONFERNO, Type.FIRE, Type.FIGHTING, [ + [ Biome.VOLCANO, PoolTier.RARE ] + ] + ], + [ Species.INFERNAPE, Type.FIRE, Type.FIGHTING, [ + [ Biome.VOLCANO, PoolTier.RARE ], + [ Biome.VOLCANO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.PIPLUP, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ] + ] + ], + [ Species.PRINPLUP, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.RARE ] + ] + ], + [ Species.EMPOLEON, Type.WATER, Type.STEEL, [ + [ Biome.WATER, PoolTier.RARE ], + [ Biome.WATER, PoolTier.BOSS_RARE ] + ] + ], + [ Species.STARLY, Type.NORMAL, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.STARAVIA, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.STARAPTOR, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.BIDOOF, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.BIBAREL, Type.NORMAL, Type.WATER, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.KRICKETOT, Type.BUG, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.KRICKETUNE, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.SHINX, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.LUXIO, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.LUXRAY, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.BUDEW, Type.GRASS, Type.POISON, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ] + ] + ], + [ Species.ROSERADE, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.CRANIDOS, Type.ROCK, -1, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ] + ] + ], + [ Species.RAMPARDOS, Type.ROCK, -1, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ] + ] + ], + [ Species.SHIELDON, Type.ROCK, Type.STEEL, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ] + ] + ], + [ Species.BASTIODON, Type.ROCK, Type.STEEL, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ] + ] + ], + [ Species.BURMY, Type.BUG, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.WORMADAM, Type.BUG, Type.GRASS, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.MOTHIM, Type.BUG, Type.FLYING, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.COMBEE, Type.BUG, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.VESPIQUEN, Type.BUG, Type.FLYING, [ + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.PACHIRISU, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.RARE ] + [ Biome.POWER_PLANT, PoolTier.UNCOMMON ] + ] + ], + [ Species.BUIZEL, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.FLOATZEL, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ] + ] + ], + [ Species.CHERUBI, Type.GRASS, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.CHERRIM, Type.GRASS, -1, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.UNCOMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.SHELLOS, Type.WATER, -1, [ + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.UNCOMMON ] + ] + ], + [ Species.GASTRODON, Type.WATER, Type.GROUND, [ + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.UNCOMMON ] + ] + ], + [ Species.AMBIPOM, Type.NORMAL, -1, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.DRIFLOON, Type.GHOST, Type.FLYING, [ + [ Biome.GRAVEYARD, PoolTier.UNCOMMON ] + ] + ], + [ Species.DRIFBLIM, Type.GHOST, Type.FLYING, [ + [ Biome.GRAVEYARD, PoolTier.UNCOMMON ] + ] + ], + [ Species.BUNEARY, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.RARE ] + ] + ], + [ Species.LOPUNNY, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.RARE ] + ] + ], + [ Species.MISMAGIUS, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.UNCOMMON ] + ] + ], + [ Species.HONCHKROW, Type.DARK, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.RARE ], + [ Biome.ABYSS, PoolTier.UNCOMMON ] + ] + ], + [ Species.GLAMEOW, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.PURUGLY, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.UNCOMMON ] + ] + ], + [ Species.CHINGLING, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.UNCOMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.STUNKY, Type.POISON, Type.DARK, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.SKUNTANK, Type.POISON, Type.DARK, [ + [ Biome.FOREST, PoolTier.UNCOMMON ] + ] + ], + [ Species.BRONZOR, Type.STEEL, Type.PSYCHIC, [ + [ Biome.RUINS, PoolTier.UNCOMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.BRONZONG, Type.STEEL, Type.PSYCHIC, [ + [ Biome.RUINS, PoolTier.UNCOMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.BONSLY, Type.ROCK, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.MIME_JR, Type.PSYCHIC, Type.FAIRY, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.HAPPINY, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.CHATOT, Type.NORMAL, Type.FLYING, [ + [ Biome.FOREST, PoolTier.SUPER_RARE ] + ] + ], + [ Species.SPIRITOMB, Type.GHOST, Type.DARK, [ + [ Biome.GRAVEYARD, PoolTier.SUPER_RARE ], + [ Biome.ABYSS, PoolTier.RARE ] + ] + ], + [ Species.GIBLE, Type.DRAGON, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.GABITE, Type.DRAGON, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.GARCHOMP, Type.DRAGON, Type.GROUND, [ + [ Biome.MOUNTAIN, PoolTier.SUPER_RARE ], + [ Biome.WASTELAND, PoolTier.UNCOMMON ] + ] + ], + [ Species.MUNCHLAX, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.RIOLU, Type.FIGHTING, -1, [ + [ Biome.PLAINS, PoolTier.SUPER_RARE ] + ] + ], + [ Species.LUCARIO, Type.FIGHTING, Type.STEEL, [ + [ Biome.DOJO, PoolTier.RARE ] + ] + ], + [ Species.HIPPOPOTAS, Type.GROUND, -1, [ + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.HIPPOWDON, Type.GROUND, -1, [ + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.SKORUPI, Type.POISON, Type.BUG, [ + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.DRAPION, Type.POISON, Type.DARK, [ + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.CROAGUNK, Type.POISON, Type.FIGHTING, [ + [ Biome.SWAMP, PoolTier.UNCOMMON ], + [ Biome.DOJO, PoolTier.UNCOMMON ] + ] + ], + [ Species.TOXICROAK, Type.POISON, Type.FIGHTING, [ + [ Biome.SWAMP, PoolTier.UNCOMMON ], + [ Biome.DOJO, PoolTier.UNCOMMON ] + ] + ], + [ Species.CARNIVINE, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.FINNEON, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.LUMINEON, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.MANTYKE, Type.WATER, Type.FLYING, [ + [ Biome.SEA, PoolTier.RARE ] + ] + ], + [ Species.SNOVER, Type.GRASS, Type.ICE, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.ABOMASNOW, Type.GRASS, Type.ICE, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ], + [ Biome.ICE_CAVE, PoolTier.BOSS ] + ] + ], + [ Species.WEAVILE, Type.DARK, Type.ICE, [ + [ Biome.ICE_CAVE, PoolTier.BOSS ] + ] + ], + [ Species.MAGNEZONE, Type.ELECTRIC, Type.STEEL, [ + [ Biome.POWER_PLANT, PoolTier.BOSS ] + ] + ], + [ Species.LICKILICKY, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.BOSS_RARE ] + ] + ], + [ Species.RHYPERIOR, Type.GROUND, Type.ROCK, [ + [ Biome.LAND, PoolTier.BOSS ] + ] + ], + [ Species.TANGROWTH, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.ELECTIVIRE, Type.ELECTRIC, -1, [ + [ Biome.POWER_PLANT, PoolTier.BOSS ] + ] + ], + [ Species.MAGMORTAR, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.BOSS ] + ] + ], + [ Species.TOGEKISS, Type.FAIRY, Type.FLYING, [ + [ Biome.MEADOW, PoolTier.BOSS ] + ] + ], + [ Species.YANMEGA, Type.BUG, Type.FLYING, [ + [ Biome.FOREST, PoolTier.BOSS ] + ] + ], + [ Species.LEAFEON, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.BOSS_RARE ] + ] + ], + [ Species.GLACEON, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.BOSS_RARE ] + ] + ], + [ Species.GLISCOR, Type.GROUND, Type.FLYING, [ + [ Biome.LAND, PoolTier.BOSS ] + ] + ], + [ Species.MAMOSWINE, Type.ICE, Type.GROUND, [ + [ Biome.ICE_CAVE, PoolTier.UNCOMMON ] + ] + ], + [ Species.PORYGON_Z, Type.NORMAL, -1, [ + [ Biome.SPACE, PoolTier.SUPER_RARE ] + ] + ], + [ Species.GALLADE, Type.PSYCHIC, Type.FIGHTING, [ + [ Biome.DOJO, PoolTier.SUPER_RARE ], + [ Biome.DOJO, PoolTier.BOSS_RARE ] + ] + ], + [ Species.PROBOPASS, Type.ROCK, Type.STEEL, [ + [ Biome.MOUNTAIN, PoolTier.BOSS ] + ] + ], + [ Species.DUSKNOIR, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.BOSS ] + ] + ], + [ Species.FROSLASS, Type.ICE, Type.GHOST, [ + [ Biome.ICE_CAVE, PoolTier.RARE ], + [ Biome.ICE_CAVE, PoolTier.BOSS ] + ] + ], + [ Species.ROTOM, Type.ELECTRIC, Type.GHOST, [ + [ Biome.POWER_PLANT, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.UXIE, Type.PSYCHIC, -1, [ + [ Biome.WATER, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.MESPRIT, Type.PSYCHIC, -1, [ + [ Biome.WATER, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.AZELF, Type.PSYCHIC, -1, [ + [ Biome.WATER, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.DIALGA, Type.STEEL, Type.DRAGON, [ + [ Biome.WASTELAND, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.PALKIA, Type.WATER, Type.DRAGON, [ + [ Biome.ABYSS, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.HEATRAN, Type.FIRE, Type.STEEL, [ + [ Biome.VOLCANO, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.REGIGIGAS, Type.NORMAL, -1, [ + [ Biome.RUINS, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.GIRATINA, Type.GHOST, Type.DRAGON, [ + [ Biome.GRAVEYARD, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.CRESSELIA, Type.PSYCHIC, -1, [ + [ Biome.SPACE, PoolTier.BOSS_ULTRA_RARE ] + ] + ], + [ Species.PHIONE, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.ULTRA_RARE ] + ] + ], + [ Species.MANAPHY, Type.WATER, -1, [ + [ Biome.SEA, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.DARKRAI, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.SHAYMIN, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.ARCEUS, Type.NORMAL, -1, [ + [ Biome.SPACE, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.VICTINI, Type.PSYCHIC, Type.FIRE, [ + [ Biome.RUINS, PoolTier.BOSS_LEGENDARY ] + ] + ], + [ Species.SNIVY, Type.GRASS, -1, [ + [ Biome.FOREST, PoolTier.RARE ] + ] + ], + [ Species.SERVINE, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SERPERIOR, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.TEPIG, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.PIGNITE, Type.FIRE, Type.FIGHTING, [ + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.EMBOAR, Type.FIRE, Type.FIGHTING, [ + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.OSHAWOTT, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.DEWOTT, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.SAMUROTT, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.PATRAT, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.WATCHOG, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.LILLIPUP, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.HERDIER, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.STOUTLAND, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.PURRLOIN, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.LIEPARD, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.PANSAGE, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SIMISAGE, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.PANSEAR, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.SIMISEAR, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.PANPOUR, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.SIMIPOUR, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.MUNNA, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.MUSHARNA, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.PIDOVE, Type.NORMAL, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.TRANQUILL, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.UNFEZANT, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.BLITZLE, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.ZEBSTRIKA, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.ROGGENROLA, Type.ROCK, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.BOLDORE, Type.ROCK, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.GIGALITH, Type.ROCK, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.WOOBAT, Type.PSYCHIC, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.SWOOBAT, Type.PSYCHIC, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.DRILBUR, Type.GROUND, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.EXCADRILL, Type.GROUND, Type.STEEL, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.AUDINO, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.TIMBURR, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.GURDURR, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.CONKELDURR, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.TYMPOLE, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.PALPITOAD, Type.WATER, Type.GROUND, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.SEISMITOAD, Type.WATER, Type.GROUND, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.THROH, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.SAWK, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.SEWADDLE, Type.BUG, Type.GRASS, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SWADLOON, Type.BUG, Type.GRASS, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.LEAVANNY, Type.BUG, Type.GRASS, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.VENIPEDE, Type.BUG, Type.POISON, [ + [ Biome.PLAINS, PoolTier.UNCOMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.WHIRLIPEDE, Type.BUG, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SCOLIPEDE, Type.BUG, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.COTTONEE, Type.GRASS, Type.FAIRY, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.MEADOW, PoolTier.COMMON ] + ] + ], + [ Species.WHIMSICOTT, Type.GRASS, Type.FAIRY, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.MEADOW, PoolTier.COMMON ] + ] + ], + [ Species.PETILIL, Type.GRASS, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.LILLIGANT, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.BASCULIN, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.SANDILE, Type.GROUND, Type.DARK, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.KROKOROK, Type.GROUND, Type.DARK, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.KROOKODILE, Type.GROUND, Type.DARK, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.DARUMAKA, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.DARMANITAN, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.MARACTUS, Type.GRASS, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.DWEBBLE, Type.BUG, Type.ROCK, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.CRUSTLE, Type.BUG, Type.ROCK, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.SCRAGGY, Type.DARK, Type.FIGHTING, [ + [ Biome.DOJO, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.SCRAFTY, Type.DARK, Type.FIGHTING, [ + [ Biome.DOJO, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.SIGILYPH, Type.PSYCHIC, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.YAMASK, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.COFAGRIGUS, Type.GHOST, -1, [ + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.TIRTOUGA, Type.WATER, Type.ROCK, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.CARRACOSTA, Type.WATER, Type.ROCK, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.ARCHEN, Type.ROCK, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.ARCHEOPS, Type.ROCK, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.TRUBBISH, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.GARBODOR, Type.POISON, -1, [ + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.ZORUA, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.ZOROARK, Type.DARK, -1, [ + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.MINCCINO, Type.NORMAL, -1, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.CINCCINO, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.GOTHITA, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.GOTHORITA, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.GOTHITELLE, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.SOLOSIS, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.DUOSION, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.REUNICLUS, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.DUCKLETT, Type.WATER, Type.FLYING, [ + [ Biome.PLAINS, PoolTier.RARE ], + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.SWANNA, Type.WATER, Type.FLYING, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.VANILLITE, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.VANILLISH, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.VANILLUXE, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.DEERLING, Type.NORMAL, Type.GRASS, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.SAWSBUCK, Type.NORMAL, Type.GRASS, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.EMOLGA, Type.ELECTRIC, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.KARRABLAST, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.ESCAVALIER, Type.BUG, Type.STEEL, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.FOONGUS, Type.GRASS, Type.POISON, [ + [ Biome.PLAINS, PoolTier.COMMON ], + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.AMOONGUSS, Type.GRASS, Type.POISON, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ] + ] + ], + [ Species.FRILLISH, Type.WATER, Type.GHOST, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.JELLICENT, Type.WATER, Type.GHOST, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.ALOMOMOLA, Type.WATER, -1, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ] + ] + ], + [ Species.JOLTIK, Type.BUG, Type.ELECTRIC, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.GALVANTULA, Type.BUG, Type.ELECTRIC, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.FERROSEED, Type.GRASS, Type.STEEL, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.FERROTHORN, Type.GRASS, Type.STEEL, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.KLINK, Type.STEEL, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.KLANG, Type.STEEL, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.KLINKLANG, Type.STEEL, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.TYNAMO, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.EELEKTRIK, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.EELEKTROSS, Type.ELECTRIC, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.ELGYEM, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.BEHEEYEM, Type.PSYCHIC, -1, [ + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.LITWICK, Type.GHOST, Type.FIRE, [ + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.LAMPENT, Type.GHOST, Type.FIRE, [ + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.CHANDELURE, Type.GHOST, Type.FIRE, [ + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.AXEW, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.FRAXURE, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.HAXORUS, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.CUBCHOO, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.BEARTIC, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.CRYOGONAL, Type.ICE, -1, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ] + ] + ], + [ Species.SHELMET, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.ACCELGOR, Type.BUG, -1, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ] + ] + ], + [ Species.STUNFISK, Type.GROUND, Type.ELECTRIC, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.MIENFOO, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.MIENSHAO, Type.FIGHTING, -1, [ + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.DRUDDIGON, Type.DRAGON, -1, [ + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.GOLETT, Type.GROUND, Type.GHOST, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.GOLURK, Type.GROUND, Type.GHOST, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.GRAVEYARD, PoolTier.COMMON ] + ] + ], + [ Species.PAWNIARD, Type.DARK, Type.STEEL, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.BISHARP, Type.DARK, Type.STEEL, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.BOUFFALANT, Type.NORMAL, -1, [ + [ Biome.GRASS, PoolTier.COMMON ] + ] + ], + [ Species.RUFFLET, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.BRAVIARY, Type.NORMAL, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.VULLABY, Type.DARK, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.MANDIBUZZ, Type.DARK, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.HEATMOR, Type.FIRE, -1, [ + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.DURANT, Type.BUG, Type.STEEL, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.DEINO, Type.DARK, Type.DRAGON, [ + [ Biome.WASTELAND, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.ZWEILOUS, Type.DARK, Type.DRAGON, [ + [ Biome.WASTELAND, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.HYDREIGON, Type.DARK, Type.DRAGON, [ + [ Biome.WASTELAND, PoolTier.COMMON ], + [ Biome.ABYSS, PoolTier.COMMON ] + ] + ], + [ Species.LARVESTA, Type.BUG, Type.FIRE, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.VOLCARONA, Type.BUG, Type.FIRE, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.VOLCANO, PoolTier.COMMON ] + ] + ], + [ Species.COBALION, Type.STEEL, Type.FIGHTING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.TERRAKION, Type.ROCK, Type.FIGHTING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.CAVE, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.VIRIZION, Type.GRASS, Type.FIGHTING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.TORNADUS, Type.FLYING, -1, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ], + [ Species.THUNDURUS, Type.ELECTRIC, Type.FLYING, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ] + ] + ], + [ Species.RESHIRAM, Type.DRAGON, Type.FIRE, [ + [ Biome.VOLCANO, PoolTier.COMMON ], + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.ZEKROM, Type.DRAGON, Type.ELECTRIC, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.POWER_PLANT, PoolTier.COMMON ], + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.LANDORUS, Type.GROUND, Type.FLYING, [ + [ Biome.MOUNTAIN, PoolTier.COMMON ], + [ Biome.LAND, PoolTier.COMMON ], + [ Biome.DESERT, PoolTier.COMMON ] + ] + ], + [ Species.KYUREM, Type.DRAGON, Type.ICE, [ + [ Biome.ICE_CAVE, PoolTier.COMMON ], + [ Biome.WASTELAND, PoolTier.COMMON ] + ] + ], + [ Species.KELDEO, Type.WATER, Type.FIGHTING, [ + [ Biome.WATER, PoolTier.COMMON ], + [ Biome.SWAMP, PoolTier.COMMON ], + [ Biome.SEA, PoolTier.COMMON ], + [ Biome.DOJO, PoolTier.COMMON ] + ] + ], + [ Species.MELOETTA, Type.NORMAL, Type.PSYCHIC, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.RUINS, PoolTier.COMMON ], + [ Biome.SPACE, PoolTier.COMMON ] + ] + ], + [ Species.GENESECT, Type.BUG, Type.STEEL, [ + [ Biome.GRASS, PoolTier.COMMON ], + [ Biome.FOREST, PoolTier.COMMON ], + [ Biome.MOUNTAIN, PoolTier.COMMON ] + ] + ] +]; + +/*for (let pokemon of allSpecies) { + if (pokemon.speciesId >= Species.XERNEAS) + break; + pokemonBiomes[pokemon.speciesId - 1][0] = Species[pokemonBiomes[pokemon.speciesId - 1][0]]; + pokemonBiomes[pokemon.speciesId - 1][1] = Type[pokemonBiomes[pokemon.speciesId - 1][1]]; + if (pokemonBiomes[pokemon.speciesId - 1][2] > -1) + pokemonBiomes[pokemon.speciesId - 1][2] = Type[pokemonBiomes[pokemon.speciesId - 1][2]]; + for (let b of Utils.getEnumValues(Biome)) { + if (biomePools.hasOwnProperty(b)) { + let poolTier = -1; + for (let t of Object.keys(biomePools[b])) { + for (let p = 0; p < biomePools[b][t].length; p++) { + if (biomePools[b][t][p] === pokemon.speciesId) { + console.log(t, pokemon.name) + poolTier = parseInt(t) as PoolTier; + break; + } + } + } + if (poolTier > -1) + pokemonBiomes[pokemon.speciesId - 1][3].push([ Biome[b], PoolTier[poolTier] ]); + } else if (biomePoolPredicates[b](pokemon)) { + pokemonBiomes[pokemon.speciesId - 1][3].push([ Biome[b], PoolTier[PoolTier.COMMON] ]); + } + } +} + +console.log(JSON.stringify(pokemonBiomes, null, ' '));*/ \ No newline at end of file diff --git a/src/modifier.ts b/src/modifier.ts index 0adaa68f8..ec2b28fcf 100644 --- a/src/modifier.ts +++ b/src/modifier.ts @@ -61,7 +61,12 @@ export abstract class Modifier { abstract apply(args: any[]): boolean; incrementStack(): void { - this.stackCount++; + if (this.stackCount < this.getMaxStackCount()) + this.stackCount++; + } + + getMaxStackCount(): integer { + return 99; } getIcon(scene: BattleScene): Phaser.GameObjects.Container { @@ -83,7 +88,7 @@ export abstract class Modifier { if (this.stackCount <= 1) return null; - const text = addTextObject(scene, 16, 12, this.stackCount.toString(), TextStyle.PARTY, { fontSize: '66px' }); + const text = addTextObject(scene, 16, 12, this.stackCount.toString(), TextStyle.PARTY, { fontSize: '66px', color: this.stackCount < this.getMaxStackCount() ? '#484848' : '#e64a18' }); text.setStroke('#424242', 16) text.setOrigin(1, 0); @@ -101,7 +106,7 @@ export abstract class ConsumableModifier extends Modifier { } shouldApply(args: any[]): boolean { - return args.length === 1 && args[0] instanceof BattleScene; + return super.shouldApply(args) && args.length === 1 && args[0] instanceof BattleScene; } } @@ -134,7 +139,7 @@ export abstract class PokemonModifier extends Modifier { } shouldApply(args: any[]): boolean { - return args.length && args[0] === this.pokemonId; + return super.shouldApply(args) && args.length && args[0] instanceof Pokemon && (this.pokemonId === -1 || (args[0] as Pokemon).id === this.pokemonId); } getIcon(scene: BattleScene): Phaser.GameObjects.Container { @@ -180,12 +185,11 @@ export class PokemonBaseStatModifier extends PokemonModifier { } shouldApply(args: any[]): boolean { - console.log(args, this.pokemonId, args) return super.shouldApply(args) && args.length === 2 && args[1] instanceof Array; } apply(args: any[]): boolean { - args[1][this.stat] = Math.min(Math.floor(args[1][this.stat] * (1 + this.stackCount * 0.1)), 999999); + args[1][this.stat] = Math.min(Math.floor(args[1][this.stat] * (1 + this.stackCount * 0.2)), 999999); return true; } @@ -215,10 +219,6 @@ export abstract class ConsumablePokemonModifier extends PokemonModifier { add(_modifierBar: ModifierBar, _modifiers: Modifier[]): boolean { return true; } - - shouldApply(args: any[]): boolean { - return args.length === 1 && args[0] instanceof Pokemon && (this.pokemonId === -1 || (args[0] as Pokemon).id === this.pokemonId); - } } export class PokemonHpRestoreModifier extends ConsumablePokemonModifier { @@ -266,12 +266,26 @@ export class ExpBoosterModifier extends Modifier { } apply(args: any[]): boolean { - (args[0] as Utils.IntegerHolder).value = Math.floor((args[0] as Utils.IntegerHolder).value * (1 + (this.stackCount * (this.boostMultiplier)))); + (args[0] as Utils.NumberHolder).value = Math.floor((args[0] as Utils.NumberHolder).value * (1 + (this.stackCount * (this.boostMultiplier)))); return true; } } +export class ExpShareModifier extends Modifier { + constructor(type: ModifierType) { + super(type); + } + + apply(_args: any[]): boolean { + return true; + } + + getMaxStackCount(): integer { + return 5; + } +} + export class ShinyRateBoosterModifier extends Modifier { constructor(type: ModifierType) { super(type); @@ -295,6 +309,10 @@ export class ShinyRateBoosterModifier extends Modifier { return true; } + + getMaxStackCount(): integer { + return 5; + } } export class ExtraModifierModifier extends Modifier { @@ -361,7 +379,7 @@ export class PokemonHpRestoreModifierType extends PokemonModifierType { constructor(name: string, restorePercent: integer, newModifierFunc?: Function, iconImage?: string) { super(name, `Restore ${restorePercent} HP or ${restorePercent}% HP for one POKéMON, whichever is higher`, - newModifierFunc || ((_type, args) => new PokemonHpRestoreModifier(this, args[0], this.restorePercent, false)), + newModifierFunc || ((_type, args) => new PokemonHpRestoreModifier(this, (args[0] as PlayerPokemon).id, this.restorePercent, false)), (pokemon: PlayerPokemon) => { if (pokemon.hp >= pokemon.getMaxHp()) return PartyUiHandler.NoEffectMessage; @@ -374,7 +392,7 @@ export class PokemonHpRestoreModifierType extends PokemonModifierType { export class PokemonReviveModifierType extends PokemonHpRestoreModifierType { constructor(name: string, restorePercent: integer, iconImage?: string) { - super(name, restorePercent, (_type, args) => new PokemonHpRestoreModifier(this, args[0], this.restorePercent, true), iconImage); + super(name, restorePercent, (_type, args) => new PokemonHpRestoreModifier(this, (args[0] as PlayerPokemon).id, this.restorePercent, true), iconImage); this.description = `Revive one POKéMON and restore ${restorePercent}% HP`; this.selectFilter = (pokemon: PlayerPokemon) => { @@ -389,7 +407,7 @@ export class PokemonBaseStatBoosterModifierType extends PokemonModifierType { private stat: Stat; constructor(name: string, stat: Stat, _iconImage?: string) { - super(name, `Increases one POKéMON's base ${getStatName(stat)} by 10%` , (_type, args) => new PokemonBaseStatModifier(this, args[0], this.stat)); + super(name, `Increases one POKéMON's base ${getStatName(stat)} by 20%` , (_type, args) => new PokemonBaseStatModifier(this, (args[0] as PlayerPokemon).id, this.stat)); this.stat = stat; } @@ -439,23 +457,27 @@ const modifierPool = { const thresholdPartyMemberCount = party.filter(p => p.getHpRatio() <= 0.75).length; return Math.ceil(thresholdPartyMemberCount / 3); }), + ].map(m => { m.setTier(ModifierTier.COMMON); return m; }), + [ModifierTier.GREAT]: [ + new WeightedModifierType(new AddPokeballModifierType(PokeballType.GREAT_BALL, 5, 'gb'), 3), + new WeightedModifierType(new PokemonReviveModifierType('REVIVE', 50), (party: Array) => { + const faintedPartyMemberCount = party.filter(p => !p.hp).length; + return faintedPartyMemberCount * 3; + }), + new WeightedModifierType(new PokemonReviveModifierType('MAX REVIVE', 100), (party: Array) => { + const faintedPartyMemberCount = party.filter(p => !p.hp).length; + return faintedPartyMemberCount; + }), + new WeightedModifierType(new PokemonHpRestoreModifierType('HYPER POTION', 80), (party: Array) => { + const thresholdPartyMemberCount = party.filter(p => p.getHpRatio() <= 0.6).length; + return thresholdPartyMemberCount; + }), new PokemonBaseStatBoosterModifierType('HP-UP', Stat.HP), new PokemonBaseStatBoosterModifierType('PROTEIN', Stat.ATK), new PokemonBaseStatBoosterModifierType('IRON', Stat.DEF), new PokemonBaseStatBoosterModifierType('CALCIUM', Stat.SPATK), new PokemonBaseStatBoosterModifierType('ZINC', Stat.SPDEF), new PokemonBaseStatBoosterModifierType('CARBOS', Stat.SPD) - ].map(m => { m.setTier(ModifierTier.COMMON); return m; }), - [ModifierTier.GREAT]: [ - new AddPokeballModifierType(PokeballType.GREAT_BALL, 5, 'gb'), - new WeightedModifierType(new PokemonReviveModifierType('REVIVE', 50), (party: Array) => { - const faintedPartyMemberCount = party.filter(p => !p.hp).length; - return faintedPartyMemberCount; - }), - new WeightedModifierType(new PokemonHpRestoreModifierType('HYPER POTION', 80), (party: Array) => { - const thresholdPartyMemberCount = party.filter(p => p.getHpRatio() <= 0.6).length; - return Math.ceil(thresholdPartyMemberCount / 3); - }) ].map(m => { m.setTier(ModifierTier.GREAT); return m; }), [ModifierTier.ULTRA]: [ new AddPokeballModifierType(PokeballType.ULTRA_BALL, 5, 'ub'), @@ -463,13 +485,14 @@ const modifierPool = { const thresholdPartyMemberCount = party.filter(p => p.getHpRatio() <= 0.5).length; return Math.ceil(thresholdPartyMemberCount / 3); }), - new ExpBoosterModifierType('LUCKY EGG', 25) - ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), - [ModifierTier.MASTER]: [ - new AddPokeballModifierType(PokeballType.MASTER_BALL, 1, 'mb'), new WeightedModifierType(new AllPokemonFullReviveModifierType('SACRED ASH'), (party: Array) => { return party.filter(p => !p.hp).length >= Math.ceil(party.length / 2) ? 1 : 0; }), + new ExpBoosterModifierType('LUCKY EGG', 25), + new ModifierType('EXP. SHARE', 'All POKéMON in your party gain an additional 10% of a battle\'s EXP. Points', (type, _args) => new ExpShareModifier(type), 'exp_share') + ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), + [ModifierTier.MASTER]: [ + new AddPokeballModifierType(PokeballType.MASTER_BALL, 1, 'mb'), new WeightedModifierType(new ModifierType('SHINY CHARM', 'Dramatically increases the chance of a wild POKéMON being shiny', (type, _args) => new ShinyRateBoosterModifier(type)), 2) ].map(m => { m.setTier(ModifierTier.MASTER); return m; }), [ModifierTier.LUXURY]: [ diff --git a/src/pokemon-evolutions.ts b/src/pokemon-evolutions.ts index 6decc2916..2b5258425 100644 --- a/src/pokemon-evolutions.ts +++ b/src/pokemon-evolutions.ts @@ -345,7 +345,7 @@ export const pokemonEvolutions = { new SpeciesEvolution(Species.KIRLIA, 20, null, null) ], [Species.KIRLIA]: [ - new SpeciesEvolution(Species.GARDEVOIR, 30, null, null), + new SpeciesEvolution(Species.GARDEVOIR, 30, null, new SpeciesEvolutionCondition((p: Pokemon) => !p.gender, true)), new SpeciesEvolution(Species.GALLADE, 1, "Dawn Stone", new SpeciesEvolutionCondition((p: Pokemon) => p.gender, true), SpeciesWildEvolutionRate.SLOW) ], [Species.SURSKIT]: [ diff --git a/src/pokemon.ts b/src/pokemon.ts index 73b81a311..e613feec9 100644 --- a/src/pokemon.ts +++ b/src/pokemon.ts @@ -9,7 +9,7 @@ import * as Utils from './utils'; import { getTypeDamageMultiplier } from './type'; import { getLevelTotalExp } from './exp'; import { Stat } from './pokemon-stat'; -import { PokemonBaseStatModifier as PokemonBaseStatBoosterModifier, ShinyRateBoosterModifier } from './modifier'; +import { ExpShareModifier, PokemonBaseStatModifier as PokemonBaseStatBoosterModifier, ShinyRateBoosterModifier } from './modifier'; import { PokeballType } from './pokeball'; export default abstract class Pokemon extends Phaser.GameObjects.Container { @@ -450,11 +450,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { }); } - getExpValue(victorLevel: integer): integer { - // Gen 1-4 formula - // return ((this.pokemon.baseExp * this.level) / 7) * (1 / 1) - // TODO: Update for exp share - return Math.floor(((this.species.baseExp * this.level) / 5) * (1 / 1) * ((Math.round(Math.sqrt(2 * this.level + 10)) * Math.pow(2 * this.level + 10, 2)) / (Math.round(Math.sqrt(this.level + victorLevel + 10)) * Math.pow(this.level + victorLevel + 10, 2)))) + 1; + getExpValue(victor: Pokemon): integer { + return ((this.species.baseExp * this.level) / 5) * ((Math.round(Math.sqrt(2 * this.level + 10)) * Math.pow(2 * this.level + 10, 2)) / (Math.round(Math.sqrt(this.level + victor.level + 10)) * Math.pow(this.level + victor.level + 10, 2))) + 1; } tint(color: number, alpha?: number, duration?: integer, ease?: string) { diff --git a/src/ui/uiHandler.ts b/src/ui/uiHandler.ts index 6927feac9..765c8c435 100644 --- a/src/ui/uiHandler.ts +++ b/src/ui/uiHandler.ts @@ -24,6 +24,10 @@ export default abstract class UiHandler { return this.scene.ui; } + getCursor(): integer { + return this.cursor; + } + setCursor(cursor: integer): boolean { const changed = this.cursor !== cursor; if (changed) diff --git a/src/utils.ts b/src/utils.ts index 7daa32272..15307b5c4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -58,6 +58,13 @@ export function getEnumValues(enumType) { return Object.values(enumType).filter(v => !isNaN(parseInt(v.toString()))).map(v => parseInt(v.toString())); } +export class NumberHolder { + public value: number; + + constructor(value: number) { + this.value = value; + } +} export class IntegerHolder { public value: integer;